我有一个像这样的json:
{
"data": [
{
"prop1":"aaa",
"prop2":"bbb",
"prop3":"1234",
"prop4":"2006"
},
{
"prop1":"ccc",
"prop2":"ddd",
"prop3":"4567",
"prop4":"2016"
},
{
"prop1":"aaa",
"prop2":"ddd",
"prop3":"4567",
"prop4":"2002"
}
]}
它将有~100个元素,我需要计算具有指定属性的元素,我尝试了
echo count($json['data']);
但它会让我知道json的所有元素 - 我需要知道prop1 => "aaa"
到目前为止我所拥有的:
$file = "test.json";
$fh = fopen($file, 'a') or die();
$json = json_decode(file_get_contents($file), true);
echo '<pre>';
print_r($json);
exit();
?>
答案 0 :(得分:1)
使用array_filter创建回调过滤功能
<?php
$json = '{
"data": [
{
"prop1":"aaa",
"prop2":"bbb",
"prop3":"1234",
"prop4":"2006"
},
{
"prop1":"ccc",
"prop2":"ddd",
"prop3":"4567",
"prop4":"2016"
},
{
"prop1":"aaa",
"prop2":"ddd",
"prop3":"4567",
"prop4":"2002"
}
]}';
echo '<pre>';
$data = json_decode($json);
print_r($data->data);
$data->data = array_filter($data->data, function($item) {
return $item->prop1 == 'aaa';
});
print_r($data->data);
exit();
?>