PHP如何快速取出JSON的指定键值?

比如{'a':'1','b':'2','c':'3'},{'a':'4','b':'5','c':'6'},{'a':'7','b':'8','c':'9'}
取出条件a=1的c值,我只想到用for循环判断a=1时再取出c,有没有更方便快捷的办法呢?
最新回答
茶丸软卷

2024-04-28 10:01:17

$json_str = '[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}]';
    $arr = json_decode($json_str , true);
    foreach($arr as $v){
        if($v['a'] == 1){
            echo $v['c'];
        }
    }
江心薄雾起

2024-04-28 00:55:38

<?php
$json_str = '[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}]';
$arr = json_decode($json_str , true);
/**
** $json_str json字符串
** $limit 限制条件数组 如:$limit=array('a','==1');
** $key 返回的键值
**/

function getValueByKey($json_str,$limit=array(),$key){ 
    $arr=json_decode($json_str,true);
    foreach($arr as $v){
        if($v[$limit[0]].$limit[1]){
            return $v[$key];
        }
    }
}

$data=getValueByKey($json_str,array('a','==1'),'c');
?>
林间有雌雄

2024-04-28 04:48:15

这种方法可以做到,但是不知道速度上会不会更快,没有测试速度,但是不需要循环了
缺点是只能取出一个a=1时的c的值,如果数组里有多个a=1的话,只能取到第一个,另一个缺点是数据格式必须是你给出这种格式的:{'a':'1','b':'2','c':'3'}, 也就是key a和key c之间必须要还有一个key 才行。不过如果数组里的数据很多的话,感觉这种应该会比循环快。如果数据少的话还是循环更稳一点,不会有太多问题

$str = "{'a':'1','b':'2','c':'3'},{'a':'4','b':'5','c':'6'},{'a':'7','b':'8','c':'9'}";

$temp = explode("'a':'1',",$str);
if(count($temp)>1){
$temp2 = explode(",",$temp[1]);
$temp3 = explode(":'", $temp2[1]);
$result = explode("'",$temp3[1]);
echo $result[0];
}else{
echo "不存在a=1";
}
追问
感谢你的回答,不过成员个数不定而且a,c之间不一定有b,好像还是for稳定兼容好些