比较多维数组

时间:2014-01-06 11:25:30

标签: php arrays multidimensional-array

我想比较两个多维数组。两个数组的内容如下:

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

2 个答案:

答案 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];
}
相关问题