"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的值组成一个数组。
php
$arr = array_column(json_decode($json, true),'mark'); echo $arr[3];//group:4
有一个词叫 JSONPath 懂的自然懂
来一段Java的
java版
https://github.com/alibaba/fastjson/wiki/JSONPath
js/php
http://goessner.net/articles/JsonPath/
只是传播一个概念,当然追求效率自己写也不是很复杂,就是一个遍历
写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'));
?>
$arr = json_decode($jobs);
for ($i=0; $i<count($arr); $i++)
$result[] = $arr[$i]['mark'];