我想比较两个多维数组。两个数组的内容如下:
$array1 = array (
array(name=>"name", lastname => "example"),
array(name=>"name")
array(name=>"name", address => "exampleaddress")
);
$array2 = array
(
array(name=>1, lastname => 2, address => 3),
);
现在我想比较两个数组并形成一个新数组,如
$array3 = array ([0]=>1, [1]=>2, [2]=>1 , [3] =>1, [4]=>3);
array3包含的值是比较数组1和数组2的键并插入数组2中与数组中的键相关的值的结果。我的问题是如何生成数组3.我已经在普通数组上完成了它,但是在多维数组中有问题。非常感谢你的帮助。
编辑:
试过这个:
foreach ($array2 as $array2) {
$new = array_intersect_key($array2, $array1);
}
$sum = array_sum($new);
return $sum;
答案 0 :(得分:0)
可能有更简洁的方法,但你可以简单地循环并构建数组3:
$array3 = array();
foreach($array1 as $item){
foreach($item as $key => $value){
$array3[] = $array2[0][$key];//Assumes there will always be an entry for $key in $array2
}
}
print_r($array3);
在您的示例中,array2是一个包含单个数组的数组,因此使用$array2[0][$key]
。
答案 1 :(得分:0)
你想在array3中拥有什么?你能举一个基于arr1& amp; ARR2?
如果要根据键“name”找到相交,可以使用以下代码:
$array1 = array (
array('name'=>"a", 'lastname' => "example"),
array('name'=>"b"),
array('name'=>"c", 'address' => "exampleaddress"),
array('name'=>"d", 'lastname' => 'x'),
);
$array2 = array
(
array("name"=>"a", 'lastname' => 'x', 'address' => 'example'),
);
$intersect = array_uintersect($array1, $array2, 'compareDeepValue');
print_r($intersect);
function compareDeepValue($val1, $val2)
{
return strcmp($val1['name'], $val2['name']);
}
// based on the comment received
$array2 = array
(
array('name'=>1, 'lastname' => 3, 'address' => 2),
);
$array3 = array();
foreach ($array2[0] as $key => $rowID)
{
$array3[] = $array1[$rowID][$key];
}