如何从 array_intersect() 获得区分大小写的返回

Posted

技术标签:

【中文标题】如何从 array_intersect() 获得区分大小写的返回【英文标题】:How can I get case-sensitive return from array_intersect() 【发布时间】:2015-05-09 09:20:11 【问题描述】:

我有两个数组,我需要比较它并从 array1 返回匹配的值。请参考我下面的代码,

$array1 = array("a" => "Green", "Red", "Blue");
$array2 = array("b" => "grEEn", "yellow", "red");
$result = array_intersect(array_map('strtolower', $array1), array_map('strtolower', $array2));

print_r($result);

我的结果是,

Array
(
    [a] => green
    [0] => red
)

但我的预期结果是我想从 array1 中获取它:

Array
(
    [a] => Green
    [0] => Red
)

【问题讨论】:

【参考方案1】:

这是因为您将所有值都小写。只需更改为array_uintersect() 并使用strcasecmp() 作为回调函数来比较它们不区分大小写,如下所示:

$result = array_uintersect($array1, $array2, "strcasecmp");

输出:

Array ( [a] => Green [0] => Red )

【讨论】:

完美..!这就是我要的。谢谢..!

以上是关于如何从 array_intersect() 获得区分大小写的返回的主要内容,如果未能解决你的问题,请参考以下文章

array_intersect 内部多维数组

array_intersect():参数 #1 不是数组?

如何将 array_intersect() 值与另一个数组中的相应键匹配?

array_intersect 可变数量的数组

如何通过键而不是值来做 PHP array_intersect?

foreach 循环中的array_intersect