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 未按预期工作