计算多阵列费率

时间:2014-09-17 15:20:39

标签: php arrays

我在计算这个问题时遇到了麻烦。 我想计算所有费率都属于id_image。

也许像key = id_image和value = tot count,id尝试使用array_count_values,但我不能正常使用它的多个:-S

Array
(
[0] => Array
    (
        [id_image] => 12
        [rate] => 4
    )

[1] => Array
    (
        [id_image] => 13
        [rate] => 4
    )

[2] => Array
    (
        [id_image] => 14
        [rate] => 3
    )

[3] => Array
    (
        [id_image] => 13
        [rate] => 4
    )

[4] => Array
    (
        [id_image] => 12
        [rate] => 5
    )

[5] => Array
    (
        [id_image] => 12
        [rate] => 4
    )

)

1 个答案:

答案 0 :(得分:0)

// test array
$arr = array(
  0 => array(
    'id_image' => 1,
    'rate' => 3
  ),
  1 => array(
    'id_image' => 2,
    'rate' => 8
  ),
  2 => array(
    'id_image' => 3,
    'rate' => 4
  ),
  3 => array(
    'id_image' => 1,
    'rate' => 2
  ),
  4 => array(
    'id_image' => 3,
    'rate' => 2
  )
);

// put the length in a var so we don't keep calling count();
$length = count($arr);

// the new array that'll hold the sum of the rates
$totals = array();

// iterate through the test array
for ($i = 0; $i < $length; ++$i) {
  // check if $totals already contains data for the specified id_image
  if (isset($totals[$arr[$i]['id_image']])) {
    // if so, add data
    $totals[$arr[$i]['id_image']] += $arr[$i]['rate'];
  } else {
    // if not so, set data
    $totals[$arr[$i]['id_image']] = $arr[$i]['rate'];
  }
}

var_dump($totals);

Example