2016-12-07 110 views
0

在JSON值我在此格式的JSON文件:搜索使用PHP

[ 
["name","purpose","description"], 
["name2","purpose2","description2"], 
["name3","purpose3","description3"] 
] 

現在,我已經得到了解決方案,通過鍵找到他們。但是,我的JSON沒有密鑰。我如何在這個JSON對象中搜索通過使用「purpose2」來查找第二個元素?另外,我需要顯示第二個元素(即「name2」,「purpose2」,「description2」)。

我使用了這個功能,但它沒有幫助我。

function searchJson($obj, $value) { 
foreach($obj as $item) { 
    foreach($item as $child) { 
     if(isset($child) && $child == $value) { 
      return $child; 
     } 
    } 
} 
return null; 
} 

在此先感謝!

+0

您是否嘗試過對它進行解碼? '$ arr = json_decode($ json,true); var_dump($ arr [1])' – AnthonyB

+0

是的,我確實先解碼了JSON。 –

+0

所以,你可以使用你的PHP對象,這只是一個數組。 – AnthonyB

回答

1

由於JSON數據沒有字符串鍵在其中進行搜索,您可以分支來測試數字索引功能的邏輯,然後使用in_array也許

$json = '[["name","purpose","description"],["name2","purpose2","description2"],["name3","purpose3","description3"]]'; 

function searchJson($obj, $value) { 
    foreach($obj as $key => $item) { 
     if(!is_nan(intval($key)) && is_array($item)){ 
      if(in_array($value, $item)) return $item; 
     } else { 
      foreach($item as $child) { 
       if(isset($child) && $child == $value) { 
        return $child; 
       } 
      } 
     } 
    } 
    return null; 
} 
$data = json_decode($json); 
$results = searchJson($data , 'purpose2'); 
print_r($results);