PHP在数组中计数null或'new'元素

时间:2013-06-28 16:34:35

标签: php

我的数组如下。我想要做的是计算数组中的节点数为null或read_status为'new'。

是否有比循环数组更充分的东西?

Array
(
    [0] => Array
        (
            [id] => 428
            [read_status] => 
        )

    [1] => Array
        (
            [id] => 427
            [read_status] => 
        )
    [2] => Array
        (
            [id] => 441
            [read_status] => new
        )  
    [3] => Array
        (
            [id] => 341
            [read_status] => read
        )  
)

所以计数应为3。

3 个答案:

答案 0 :(得分:2)

在数组中循环执行此操作没有任何问题,它实际上可能比使用通用方法更快地为您执行此操作。就是这样:

$count = 0;
foreach ($arrays as $entry)
{
    if (!$entry['read_status'] || $entry['read_status'] === "new")
    {
        $count++;
    }
}

echo $count;

答案 1 :(得分:2)

你可以做到

$count = count(array_filter($myArray, function($item){
    return $item['read_status'] != 'new';
}));

echo $count;

但我认为像这样循环它会更有效:

$count = 0;
foreach($myArray as $item){
    if($item['read_status'] != 'new')$count++;
}

echo $count;

答案 2 :(得分:0)

我实际上通过完全删除null来改进我的SQL - 所以现在read_status是读取或新的。

IF(feed_read.read_status IS NULL,'new','read') AS read_status

从那里,我能够利用另一个SO问题来计算'新'元素。

$counted = array_count_values(array_map(function($value){return $value['read_status'];}, $result));
echo $counted['new'];