我有下面的数组。
<?php $arrLayout = array(
"section1" => array(
"wComingEpisodes" => array(
"title" => "Coming Episodes",
"display" => ""
)
));
?>
然后我想检查wComingEpisodes是否在数组中所以…
<?php if (in_array( "wComingEpisodes" , $arrLayout )) {
echo "CHECKED";}
?>
然而,即使它在数组中,它也不返回任何东西。我是否需要做一些不同的事情,因为多个数组或我的错误在哪里?
in_array
测试值,而不是键。它也不测试嵌套的值。
$arrLayout = array(
"section1" => array(
"wComingEpisodes" => array(
"title" => "Coming Episodes",
"display" => ""
)
));
echo array_key_exists(
"wComingEpisodes",
// this is the array you're actually looking for
$arrLayout['section1'] )?'exists':'does not exist';
您将根据文档获得正确的结果。
如果你想搜索一个多维数组递归,看看用户贡献的笔记,在那里你可以找到这样的例子,展示了如何进行递归搜索(这似乎是你正在寻找的)。
编辑:
我只是注意到你试图找出一个特定的键是否存在:在这种情况下,你必须使用array_key_exists(像in_array一样,这也不做递归搜索,所以你必须做这样的事情)。
in array查找数组值
字符串"wComingEpisodes"是值
的键你可以尝试使用array_key_exists()
In_array本质上不是递归的,所以它只会将你给它的值与你给它的数组的第一级数组项进行比较。
谢天谢地,你不是第一个遇到这个问题的人,所以这里有一个函数可以帮助你。摘自php.net in_array文档
function in_arrayr($needle, $haystack) {
foreach ($haystack as $v) {
if ($needle == $v) return true;
elseif (is_array($v)) return in_arrayr($needle, $v);
}
return false;
}
http://www.php.net/manual/en/function.in-array.php 60696