簡體   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