我有这个代码从数据库中选择一些值,值是示例(-10,1.4,5.23,0.20,-1.45 .....),所以我需要将它们分为正,负和中性。 / p>
所以我这样做并且显示结果很好,但我无法计算它们中有多少,例如我有超过50个正值,但它只显示1,但如果我使用var_dump($一个);我得到了所有这些。
我如何计算每个if语句中有多少个值?
$stmt = $db->prepare("SELECT numbers FROM mytable WHERE uid = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
$result = $stmt->fetchAll();
$cnt = $stmt->rowCount();
echo "Total entries " . $cnt . "<br>"; // returns total count of results
// var_dump($result);
foreach ($result as $rez) {
$a = $rez['orderprofit']; // all values : positive, negative and neutral (zero)
//var_dump($a);
if ($a > 0) {
var_dump($a);
$positive_values = count($a); //(count($a) / $cnt)*100 . '%';
} elseif ($a < 0) {
$negative_values = $a;
} elseif ($a == 0) {
$neutral_values = $a;
}
}
Var_dump会返回一个类似这样的结果,所以如果我尝试将阵列转换为字符串转换,那么任何数组都无法正常工作:
string(3) "0.9" string(3) "4.7" string(3) "6.9" string(3) "5.4" string(3) "5.4"
string(3) "7.9" string(3) "5.9" string(5) "17.21" string(1) "5" string(3) "4.5"
string(3) "4.7" string(1) "5" string(3) "5.4" string(3) "5.8" string(3) "5.9"
string(3) "4.7" string(3) "5.4" string(3) "6.9" string(3) "4.5" string(1) "5"
string(3) "4.7" string(3) "5.4"
答案 0 :(得分:1)
您可以将值推送到数组中,然后count
该数组中有多少个元素。
例如:
$positive_values = array();
$negative_values = array();
$neutral_values = array();
foreach ($result as $rez) {
$a = $rez['orderprofit']; // all values : positive, negative and neutral (zero)
if ($a > 0) {
$positive_values[] = $a;
} elseif ($a < 0) {
$negative_values[] = $a;
} elseif ($a == 0) {
$neutral_values[] = $a;
}
}
echo "count positive values : " . count($positive_values) . "<br />";
echo "count negative values : " . count($negative_values) . "<br />";
echo "count neutral values : " . count($neutral_values) . "<br />";
答案 1 :(得分:1)
您总是重置计数。如果$row['orderprofit']
确实包含数值,则以下可能是一种好方法:
<?php
$positive_values = 0;
$negative_values = 0;
$neutral_values = 0;
foreach ($result as $row) {
$a = $row['orderprofit'];
if ($a > 0) {
$positive_values++;
} elseif ($a < 0) {
$negative_values++;
} elseif ($a == 0) {
$neutral_values++;
}
}
答案 2 :(得分:0)
声明$ positive_values,$ negative_values,$ neutral_values而不是count使用$ positive_values ++
count 计算数组中的所有元素或对象中的某些内容
答案 3 :(得分:0)
声明三个不同的变量,一个存储正值的计数($posi
),一个存储空值的计数($zero
),另一个存储负值的计数({ {1}})。在$nega
循环内,检查当前值foreach
并增加适当的变量。例如:
$a