我正在使用MySQL查询"SELECT * FROM ..."
一个while
循环:
$rtnjsonobj = array();
while ($k = @mysql_fetch_array($tmp)) {
$rtnjsonobj['status'] = $k['status'];
$rtnjsonobj['text'] = $k['text'];
$data[] = $rtnjsonobj;
}
我需要计算此数组中status == 1
的所有值。
我怎样才能做到这一点?
答案 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做计数。