我需要从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 )
我该怎么做?
答案 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()
。