我正在尝试按“字段->值”对 PHP foreach 中的项目进行分组,并分别获取每个组的总和。 下面的代码可以工作,但我觉得有更有效的方法吗?
$number_1 = 0;
$number_2 = 0;
$number_3 = 0;
foreach ( $fields as $field ) {
if($field->value == 1) {
$number_1 += $field->number;
}
if($field->value == 2) {
$number_2 += $field->number;
}
if($field->value == 3) {
$number_3 += $field->number;
}
}
echo $number_1;
echo $number_2;
echo $number_3;
在这种情况下,您可以使用可变变量。
一般来说,我宁愿推荐一个数组,但这是你的选择。
foreach ( $fields as $field ) {
${"number_" . $field->value} += $field->number;
}
数组版本。
foreach ( $fields as $field ) {
$arr["number_" . $field->value] += $field->number;
}
// Either output as array or extract values to separate variables.
Echo $arr["number_1"];
//Or
Extract($arr);
Echo $number_1;
编辑了应有值的数字。
不要使用单独的变量,使用以
$field->value
作为索引的数组。
$numbers = array();
foreach ($fields as $field) {
if (isset($numbers[$field->value])) {
$numbers[$field->value] += $field->number;
} else {
$numbers[$field->value] = $field->number;
}
}