比较两个数组array_diff_assoc()

时间:2014-07-04 15:49:55

标签: php arrays compare

我需要从2个数组获得价值......

First Array:

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 )

我该怎么做?

2 个答案:

答案 0 :(得分:0)

你可以尝试这个:

    $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);

答案 1 :(得分:0)

您没有在顶级关联数组上操作。您有两个包含嵌套数组的数字数组。其中一个包含关联数组,另一个包含数字数组。首先,您可以将其以标准化形式提供,例如按$normalized = array_map( function($ar) { return array_values($ar); }, $array1 );到数字形式。

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