PHP foreach Group by Value

时间:2018-03-19 05:12:41

标签: php foreach

我试图通过'field->值'将PHP foreach中的项目分组,并分别得到每个组的总和。下面的代码有效,但我觉得有一种更有效的方法吗?

提前致谢。

<?php

$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; 

?>

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用变量变量 一般来说,我宁愿推荐一个阵列,但这是你的选择。

->first()

数组版本。

foreach ( $fields as $field ) {  
     ${"number_" . $field->value} += $field->number;
}

编辑的数字应该是值。

答案 1 :(得分: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;
    }
}