[英]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.