繁体   English   中英

检查数字是否在PHP的解码JSON字符串数组中

[英]Check if a number is in a decoded JSON string array in PHP

我已经解码了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!";
}

这似乎是一个简单的问题-我是盲人吗...

(未测试)(甚至也可以搜索子数组(来自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;
}

您在数组中有多个维度。 如果您的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;
    }
}

您要查找的值不是5而是array("id" => 5)有助于您的理解吗?

我不确定in_array(array("id" => 5), $array)是否可以工作,但是如果可以,太好了!

否则,请使用典型的find-pattern算法对其进行匹配:遍历值以寻找匹配项,如果可以,请尽早返回。


您还可以考虑重新索引输入数组,以便更容易找到id值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM