php为每个循环条件总计

时间:2017-02-12 21:10:49

标签: php loops foreach count conditional

我有一个foreach循环,我试图获得总计数值,这是正常的。但问题是,数据库中的大多数hard_disk3列行包含值“None”,我希望php不计算行值为“None”的位置。

这是php代码,我该怎么做才能实现这个目标?

<?php
    $type="systype, hard_disk3";
    $typeQuery = $basequery." GROUP BY ".$type;
    // Perform the Query
    $objDbResultByType = $objDatabase->Query($typeQuery);
    $imran9 = array();
    foreach ($objDbResultByType as $row) {

        $result = "{ label: \"".$row['systype']." ".$row['hard_disk3']."\", y: " .$row['total']." },";
        array_push($imran9,$result);
    }
    $lastIndex = count($imran9)-1;
    $lastValue = $imran9[$lastIndex];
    $imran9[$lastIndex] = rtrim($lastValue, ',');
?>

2 个答案:

答案 0 :(得分:1)

您应该在SQL查询中指定它。 SELECT COUNT(hard_disk3) FROM table WHERE hard_disk3 != "None"这样你的dbms只返回总行数,你既不需要foreach循环,也不需要PHP做任何真正的工作来得到你的结果。

答案 1 :(得分:1)

你可以通过两种方式实现这一点,首先是Sherif已经提到过(这是更好的方法),PHP中的第二种方法非常简单。试试这个:

<?php
    $type="systype, hard_disk3";
    $typeQuery = $basequery." GROUP BY ".$type;
    // Perform the Query
    $objDbResultByType = $objDatabase->Query($typeQuery);
    $imran9 = array();
    foreach ($objDbResultByType as $row) {
        if ($row['hard_disk3'] == "None") 
        {
            continue;
        }
        $result = "{ label: \"".$row['systype']." ".$row['hard_disk3']."\", y: " .$row['total']." },";
        array_push($imran9,$result);
    }
    $lastIndex = count($imran9)-1;
    $lastValue = $imran9[$lastIndex];
    $imran9[$lastIndex] = rtrim($lastValue, ',');
?>

或者你可以试试:

if ($row['hard_disk3'] != "None") {
    $result = "{ label: \"".$row['systype']." ".$row['hard_disk3']."\", y: " .$row['total']." },";
    array_push($imran9,$result);
}