循环遍历json文件以在PHP中查找特定值

时间:2018-08-11 05:56:55

标签: php arrays json loops

我的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_01category_02中找到它。并且还希望找到匹配词的given_value。 我只是尝试过这种方式,

$data = file_get_contents ("myjson.json");
$json = json_decode($data, true);

foreach($arr as $item) { 
$uses = ($item['word']= $word); 
}

这不起作用。我该如何解决,请帮助我!

1 个答案:

答案 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";
    }
}