我有一个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, ',');
?>
答案 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);
}