使用带有多维数组和不同键的array_intersect

时间:2017-03-14 13:57:02

标签: php arrays

拥有此数组($firstArray):

array(3) {
  [0]=>
  array(2) {
    ["Name"]=>
    string(3) "foo"
    ["id"]=>
    string(4) "1064"
  }
  [1]=>
  array(2) {
    ["Name"]=>
    string(3) "boo"
    ["id"]=>
    string(4) "1070"
  }
  [2]=>
  array(2) {
    ["Name"]=>
    string(3) "bar"
    ["id"]=>
    string(4) "1081"
 }

这一个($secondArray):

array(2) {
  [0]=>
  string(4) "1064"
  [1]=>
  string(4) "1081"
}

如何在这些内部数组上使用array_intersect

我尝试了array_intersect($firstArray, $secondArray);无效。

我想要的输出是:

array(2) {
  [0]=>
  array(2) {
    ["Name"]=>
    string(3) "foo"
    ["id"]=>
    string(4) "1064"
  }
  [1]=>
  array(2) {
    ["Name"]=>
    string(3) "bar"
    ["id"]=>
    string(4) "1081"
 }

PS:我使用的是PHP 5.2(我无法更新版本,因为它不是我自己的机器)

提前致谢。

1 个答案:

答案 0 :(得分:1)

您不能在具有不同结构的两个阵列上使用array_intersect。为了实现您的目标,您必须遍历第一个数组并检查id值是否在第二个数组中,如下所示:

$outputArray = array();

foreach ($firstArray as $value) {
    if (in_array($value['id'], $secondArray))
        $outputArray[] = $value;
}