如何计算php数组和while循环中的值

时间:2014-07-31 16:58:37

标签: php

我正在使用MySQL查询"SELECT * FROM ..."

一个while循环:

$rtnjsonobj = array();  
while ($k = @mysql_fetch_array($tmp)) { 
   $rtnjsonobj['status'] = $k['status'];
   $rtnjsonobj['text'] = $k['text'];
   $data[] = $rtnjsonobj;  
}

我需要计算此数组中status == 1的所有值。 我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:2)

无需循环。请进一步探索SQL语言。

Select  Count(*)
From    TableName
Where   Status = 1

编辑:

如果您已经在PHP中计算它的心脏,只需创建一个设置为0的计数器,并在找到该值时递增。

$Count = 0;
$rtnjsonobj = array();  
while ($k = @mysql_fetch_array($tmp)) { 
   $rtnjsonobj['status'] = $k['status'];
   $rtnjsonobj['text'] = $k['text'];
   if($k['status'] == 1)
       $Count++;
   $data[] = $rtnjsonobj;  
}

答案 1 :(得分:2)

$counter = 0;
$rtnjsonobj = array();  
while ($k = @mysql_fetch_array($tmp)) { 
$rtnjsonobj['status'] = $k['status'];
$rtnjsonobj['text'] = $k['text'];
$data[] = $rtnjsonobj;  
if($k['status'] == 1)
   $counter = $counter + 1;
}

这会将第二个查询保存到数据库

答案 2 :(得分:0)

在您的选择中,您可以覆盖另一个查询:

Select *, (select count(*) from mytable where status=1) as myCounter from ...

或者在while循环中增加变量:

$rtnjsonobj = array();
$myCounter = 0;
while ($k = @mysql_fetch_array($tmp)) { 
   $rtnjsonobj['status'] = $k['status'];
   $rtnjsonobj['text'] = $k['text'];
   $data[] = $rtnjsonobj;
   if($k['status'] == 1){$myCounter++;}
}
echo $myCounter;

答案 3 :(得分:0)

使用array_reduce:

  

array_reduce - 使用回调函数迭代地将数组减少为单个值

function mycount($carry, $item) {
    $carry += $item['status'] == 1 ? 1 : 0;
    return $carry;
}

$num = array_reduce($rtnjsonobj, "mycount");

顺便说一下,你应该从SQL做计数。