【问题标题】:Compare Two arrays array_diff_assoc() [duplicate]比较两个数组 array_diff_assoc() [重复]
【发布时间】:2014-07-04 15:49:55
【问题描述】:

我需要从 2 个数组中获取值...

第一个数组:

Array ( [0] => Array ( [id] => 1 [nombre_area] => biblioteca ) 
    [1] => Array ( [id] => 2 [nombre_area] => enfermeria ) 
    [2] => Array ( [id] => 3 [nombre_area] => talleres y laboratorios ) ) 

第二个数组:

Array ( [0] => Array ( [0] => 1 [1] => biblioteca ) 
        [1] => Array ( [0] => 3 [1] => talleres y laboratorios ) )

我需要区别:

Array ( [0] => Array ( [id] => 2 [nombre_area] => enfermeria )

我该怎么做?

【问题讨论】:

    标签: php arrays compare


    【解决方案1】:

    您没有在顶层操作关联数组。您有两个包含嵌套数组的数值数组。其中一个包含关联数组,另一个包含数字数组。首先,您可以将其以标准化形式呈现,例如由$normalized = array_map( function($ar) { return array_values($ar); }, $array1 ); 转为数字形式。

    但是,您有两个相同形式的结构,但array_diff() 不会执行深度检查。它只会比较第一级元素的字符串表示形式。因此,除了递归迭代数组之外,您别无选择,例如借助函数array_walk_recursive()

    【讨论】:

      【解决方案2】:

      你可以试试这个:

          $array1 =Array (Array ( 'id' => 1, 'nombre_area' => 'biblioteca' ),Array ( 'id' => 2, 'nombre_area' => 'enfermeria' ),Array ( 'id' => 3 ,'nombre_area' => 'talleres y laboratorios' ) );
          $array2 = Array (Array (1,'biblioteca' ), Array(3,'talleres y laboratorios' ));
          $IDs = array_map(function($arr2){return $arr2[0];},$array2);
          $result = array();
          foreach($array1 as $arr1){
              if(!in_array($arr1['id'],$IDs)) $result[] = $arr1; //compare id
          }
          print_r($result);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多