使用php在JSON中搜索值

时间:2016-12-07 07:42:15

标签: php json

我有一个这种格式的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;
}

提前致谢!

1 个答案:

答案 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 );