我的数组如下。我想要做的是计算数组中的节点数为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。
答案 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'];