我的json文件看起来很像
myjson.json
[
{"name":"category_01","data":
[
{"id":"1","word":"ma","given_value":"1"},
{"id":"3","word":"me","given_value":"1"},
] }
[
{"name":"category_02","data":
[
{"id":"1","word":"vea","given_value":"1"},
{"id":"3","word":"ve","given_value":"1"},
] }
所以我在这里想要的是,使用php检查此json数组中是否有特定值。假设
myphp.php
$word = 've';
如果该值在上面的数组中,则应在category_01
或category_02
中找到它。并且还希望找到匹配词的given_value
。
我只是尝试过这种方式,
$data = file_get_contents ("myjson.json");
$json = json_decode($data, true);
foreach($arr as $item) {
$uses = ($item['word']= $word);
}
这不起作用。我该如何解决,请帮助我!
答案 0 :(得分:3)
首先,您发布的JSON无效。我认为它应该像这样:
[
{
"name": "category_01",
"data": [{
"id": "1",
"word": "ma",
"given_value": "1"
},
{
"id": "3",
"word": "me",
"given_value": "1"
}
]
},
{
"name": "category_02",
"data": [{
"id": "1",
"word": "vea",
"given_value": "1"
},
{
"id": "3",
"word": "ve",
"given_value": "1"
}
]
}
]
尝试使用https://jsonlint.com/之类的在线工具来检查JSON。 (如果遇到错误,我建议从头开始再次构建json)。
我还建议您在使用json之前先对其进行检查:
if ($arr === null && json_last_error() !== JSON_ERROR_NONE) {
die("incorrect json data");
}
要获得价值,您必须知道数据的外观,然后对其进行处理:
foreach($arr as $category) {
foreach($category['data'] as $data) {
if(strstr($data['word'], $word))
echo $category['name'].' '.$data['word'].' '.$data['given_value']."\n";
}
}