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

比如{'a':'1','b':'2','c':'3'},{'a':'4','b':'5','c':'6'},{'a':'7','b':'8','c':'9'}取出条件a=... 比如{'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,有没有更方便快捷的办法呢?
展开
 我来答
jsjxuwenlong
推荐于2016-09-06 · 超过17用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:44.1万
展开全部
$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'];
        }
    }
羽日博客
推荐于2016-03-26 · TA获得超过365个赞
知道答主
回答量:96
采纳率:100%
帮助的人:57.6万
展开全部
<?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');
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bxbyg
推荐于2018-03-04 · TA获得超过326个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:454万
展开全部
这种方法可以做到,但是不知道速度上会不会更快,没有测试速度,但是不需要循环了
缺点是只能取出一个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稳定兼容好些
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式