Array_Intersect 未按预期工作

Posted

技术标签:

【中文标题】Array_Intersect 未按预期工作【英文标题】:Array_Intersect not working as expected 【发布时间】:2013-01-30 17:30:14 【问题描述】:

我有两个多维数组,我正在尝试使用array_intersect 来查找$array1 中出现在$array2 中的值。相反,如下所示,结果包含第一个数组$array1 中的两个值,即使第二个数组$array2 中只有一个值出现。我想我对这个函数的工作原理有一些误解,谁能澄清我在这里做错了什么?

var_dump($array1);
array(2) 
  [0]=>
  array(1) 
    ["id"]=>
    string(2) "28"
  
  [7]=>
  array(1) 
    ["id"]=>
    string(2) "30"
  


var_dump($array2);
array(1) 
  [0]=>
  array(1) 
    ["id"]=>
    string(2) "30"
  



var_dump(array_intersect($array1, $array2));
array(2) 
  [0]=>
  array(1) 
    ["id"]=>
    string(2) "28"
  
  [7]=>
  array(1) 
    ["id"]=>
    string(2) "30"
  

【问题讨论】:

签出此link 【参考方案1】:

函数 array_intersect 将值作为字符串进行比较,请参阅manual。不幸的是,这只是为所有数组提供了“数组”。

Note: Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. In words: when the string representation
is the same.

相反,您可以使用自定义比较功能:

array_uintersect($array1, $array2, function($a, $b)  return ($a<$b)?-1:($a==$b)?0:1; )

如果您还想比较顺序和类型,或者使用 !== - 请参阅 here 了解区别。

【讨论】:

【参考方案2】:

array_intersect_assoc() 查看关键 值的交集。

【讨论】:

以上是关于Array_Intersect 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

一条线上的多个分配未按预期工作

CUPTI / CUDA prof_trigger 未按预期工作

解决了| Python:If/elif/else 语句未按预期工作?

PHP is_int 未按预期执行

Angular ngOnit () 未按预期工作

$() 函数未按预期工作