我有一个这种格式的JSON文件:
[
["name","purpose","description"],
["name2","purpose2","description2"],
["name3","purpose3","description3"]
]
现在,我已经找到了通过密钥找到它们的解决方案。但是,我的JSON没有密钥。如何使用“purpose2”在此JSON对象内搜索以查找第二个元素?另外,我需要显示第二个元素(即“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 :(得分: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 );