我有这个输出:
{
"results": [
{
"url": "https:1783.json",
"id": 1783,
"created_at": "2019-08-29T13:52:47Z",
"status": "open",
"recipient": null,
},
{
"url": "https:1781.json",
"id": 1781,
"created_at": "2019-08-29T10:21:57Z",
"status": "open",
"recipient": null,
},
etc...
我要做的就是用打开
的状态计算元素的数量“状态”:“打开”,
这是我到目前为止所拥有的:
$result = json_decode($result, true);
echo count(array_keys($result, "open"));
但是它输出 0
谢谢
答案 0 :(得分:2)
您可以采用两种方法,解决当前问题意味着必须从数据的status
元素中提取results
列,然后使用array_keys()
作为当前数组它正在查看错误的级别...
echo count(array_keys(array_column($result['results'], 'status'), "open"));
这很短,但是还涉及处理整个数组几次。
或者,一个简单的foreach()
循环仅在每次计算其后的值时才进行计数...
$count = 0;
foreach ( $result['results'] as $res ) {
if ( $res['status'] == 'open' ) {
$count++;
}
}
echo $count;
此(IMHO)更快,更易读。
答案 1 :(得分:1)
您可以将count与array_filter一起使用,如下所示,
echo count(array_filter($arr['results'], function ($val) {return $val['status'] == 'open';}));
输出
2
注意:您的json无效。
答案 2 :(得分:0)
$array = array("test","test1","test");
$counts = array_count_values($array);
echo $counts['test'];