【发布时间】:2011-05-06 21:54:15
【问题描述】:
我使用in_array() 来检查一个值是否存在于如下数组中,
$a = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $a))
{
echo "Got Irix";
}
//print_r($a);
但是多维数组(如下)呢?如何检查该值是否存在于多维数组中?
$b = array(array("Mac", "NT"), array("Irix", "Linux"));
print_r($b);
或者当涉及到多维数组时我不应该使用in_array()?
【问题讨论】:
-
接受的解决方案效果很好,但由于 PHP 的类型杂乱,在进行非严格比较时可能会导致意外结果。见:stackoverflow.com/a/48890256/1579327
-
jwueller 的答案和我的答案都是您问题的正确答案。我提出了一个扩展 jwueller 函数的替代解决方案,以避免在进行非严格比较时由于 PHP 的类型杂乱而导致的常见错误。
-
一个班轮:
var_dump(array_sum(array_map(function ($tmp) {return in_array('NT',$tmp);}, $multiarray)) > 0); -
@AgniusVasiliauskas 聪明的解决方案,但如果第一级数组包含一个不是数组的项目,例如:
$multiarray = array( "Hello", array("Mac", "NT"), array("Irix", "Linux")); -
@Paolo 没有人会阻止您根据需要扩展匿名函数 - 在这种情况下,如果变量
$tmp是具有is_array()函数的数组,则添加检查匿名函数。如果不是数组 - 继续不同的场景。
标签: php arrays multidimensional-array