2016-12-07 75 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);