我有以下数组..
<?php $arrLayout = array(
"section1" => array(
"wComingEpisodes" => array(
"title" => "Coming Episodes",
"display" => ""
)
));
?>
然后我想检查wComingEpisodes是否在数组中..
<?php if (in_array( "wComingEpisodes" , $arrLayout )) {
echo "CHECKED";}
?>
然而即使它在数组中也没有返回任何内容。由于多个数组或我的错误在哪里,我是否需要做一些不同的事情?
答案 0 :(得分:1)
您根据documentation获得了正确的结果。
如果你想要递归搜索一个多维数组,看看用户提供的注释,在那里你可以找到像this这样的例子,它们展示了如何进行递归搜索(这似乎是你的'寻找)。
修改强>
我刚刚注意到你正试图找出一个特定的密钥是否存在:在这种情况下,你将不得不使用array_key_exists(就像in_array,这也不会进行递归搜索,所以你会有做this)之类的事情。
答案 1 :(得分:1)
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';
答案 2 :(得分:0)
答案 3 :(得分:0)
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;
}