我已经解码了我的JSON字符串,现在我想在PHP中使用in_array()函数来检查数组中是否存在其中一个ID号(确切地说是数字5)。
阵列:
Array ( [0] => Array ( [id] => 5 ) [1] => Array ( [id] => 4 [children] => Array ( [0] => Array ( [id] => 2 [children] => Array ( [0] => Array ( [id] => 7 [children] => Array ( [0] => Array ( [id] => 10 ) ) ) ) ) ) ) [2] => Array ( [id] => 3 [children] => Array ( [0] => Array ( [id] => 6 [children] => Array ( [0] => Array ( [id] => 8 ) ) ) [1] => Array ( [id] => 9 ) ) ) )
我的代码(失败了):
if (in_array(5, $array)) {
echo "i'm in the array!";
}
或
if (in_array('5', $array)) {
echo "i'm in the array!";
}
这似乎是一个简单的问题 - 我是盲目的......
答案 0 :(得分:2)
(未经测试)(甚至可以搜索子数组(来自php))
if(recursive_array_search("5",$array))
{
echo 'found';
}else
{
echo 'not found';
}
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
return $current_key;
}
}
return false;
}
答案 1 :(得分:1)
数组中有多个维度。如果你有PHP> = 5.5,你需要循环检查id
或使用array_column
:
$ids = array_column($array, 'id');
if(in_array(5, $ids)) {
echo "i'm in the array!";
}
或者:
foreach($array as $value) {
if($value['id'] == 5) {
echo "i'm in the array!";
break;
}
}
答案 2 :(得分:0)
您要查找的值不是5
,而array("id" => 5)
是否有助于您理解?
我不确定in_array(array("id" => 5), $array)
是否有效,但如果有效,那就太棒了!
否则,使用典型的查找模式算法来匹配它:循环查找匹配的值,如果可以,则提前返回。
您还可以考虑重新索引输入数组,以便更容易找到id值。