php - 取出json数据中的某一项组成一个数组?
阿神
阿神 2017-04-10 15:47:25
[PHP讨论组]
"jobs": [
                    {
                        "name": "iOS开发工程师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "广州",
                        "mark": "group:1"
                    },
                    {
                        "name": "金融集团CEO",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "北京",
                        "mark": "group:2"
                    },
                    {
                        "name": "运维开发工程师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "上海",
                        "mark": "group:3"
                    },
                    {
                        "name": "资深视觉设计师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "广州",
                        "mark": "group:4"
                    }
                    ]

怎么取出json数据中的mark这一项,例如我需要取group:4这个值得时候就可以用数组下标的方式,或者我怎么单独取出group:4这个数值?如果我想取出group后面的值呢,例如group:1取出1,用group的值组成一个数组。

阿神
阿神

闭关修行中......

全部回复(4)
ringa_lee
$arr = json_decode($jobs);
for ($i=0; $i<count($arr); $i++)
  $result[] = $arr[$i]['mark'];
天蓬老师

javascript比较多,很少写PHP了,可能PHP的数组有更好的API

<?php
$jsonString = '[
                    {
                        "name": "iOS开发工程师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "广州",
                        "mark": "group:1"
                    },
                    {
                        "name": "金融集团CEO",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "北京",
                        "mark": "group:2"
                    },
                    {
                        "name": "运维开发工程师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "上海",
                        "mark": "group:3"
                    },
                    {
                        "name": "资深视觉设计师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "广州",
                        "mark": "group:4"
                    }
                    ]';



function GetSubArray($jsonString, $mark) {
    // json字符串转数组
    $array = json_decode($jsonString, true);
    // 创建需要返回的新数组
    $newArray = [];
    // 遍历数组,根据$mark条件,添加到新数组中去
    for ($i = 0; $i < count($array); $i++) {
        if ($array[$i]['mark'] === $mark) {
            array_push($newArray, $array[$i]);
        }
    }
    return $newArray;
}

var_dump(GetSubArray($jsonString, 'group:4'));

?>
阿神

有一个词叫 JSONPath 懂的自然懂

来一段Java的

java版
https://github.com/alibaba/fastjson/wiki/JSONPath

js/php
http://goessner.net/articles/JsonPath/

只是传播一个概念,当然追求效率自己写也不是很复杂,就是一个遍历

PHPz
php
$arr = array_column(json_decode($json, true),'mark'); echo $arr[3];//group:4
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号