【问题标题】:multidimensional array for sum based on array key基于数组键求和的多维数组
【发布时间】:2020-01-07 18:45:29
【问题描述】:

数组值的加法让我一头雾水,这里就不直接加了,因为这些值会根据Bimbel的_code和code标准进行分组,然后再加起来。

我有这样的数组

    array(3) {
  [0]=>
  array(5) {
    [0]=>
    object(stdClass)#85 (3) {
      ["bimbel_kode"]=>
      string(2) "P1"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(1) "2"
    }
    [1]=>
    object(stdClass)#86 (3) {
      ["bimbel_kode"]=>
      string(2) "P1"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(4) "1.25"
    }
    [2]=>
    object(stdClass)#87 (3) {
      ["bimbel_kode"]=>
      string(2) "P1"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(3) "2.5"
    }
    [3]=>
    object(stdClass)#88 (3) {
      ["bimbel_kode"]=>
      string(2) "P1"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(4) "3.75"
    }
    [4]=>
    object(stdClass)#89 (3) {
      ["bimbel_kode"]=>
      string(2) "P1"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(3) "1.5"
    }
  }
  [1]=>
  array(5) {
    [0]=>
    object(stdClass)#99 (3) {
      ["bimbel_kode"]=>
      string(2) "P2"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(1) "2"
    }
    [1]=>
    object(stdClass)#100 (3) {
      ["bimbel_kode"]=>
      string(2) "P2"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(4) "1.25"
    }
    [2]=>
    object(stdClass)#101 (3) {
      ["bimbel_kode"]=>
      string(2) "P2"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(3) "0.5"
    }
    [3]=>
    object(stdClass)#102 (3) {
      ["bimbel_kode"]=>
      string(2) "P2"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(4) "2.25"
    }
    [4]=>
    object(stdClass)#103 (3) {
      ["bimbel_kode"]=>
      string(2) "P2"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(3) "2.5"
    }
  }
  [2]=>
  array(5) {
    [0]=>
    object(stdClass)#113 (3) {
      ["bimbel_kode"]=>
      string(2) "P3"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(3) "1.5"
    }
    [1]=>
    object(stdClass)#114 (3) {
      ["bimbel_kode"]=>
      string(2) "P3"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(4) "1.25"
    }
    [2]=>
    object(stdClass)#115 (3) {
      ["bimbel_kode"]=>
      string(2) "P3"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(3) "2.5"
    }
    [3]=>
    object(stdClass)#116 (3) {
      ["bimbel_kode"]=>
      string(2) "P3"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(4) "3.75"
    }
    [4]=>
    object(stdClass)#117 (3) {
      ["bimbel_kode"]=>
      string(2) "P3"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      string(3) "2.5"
    }
  }
}

我想得到这样的结果

array(3) {
  [0]=>
  array(5) {
    [0]=>
    array(3) {
      ["bimbel_kode"]=>
      string(2) "P1"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      float(11)
    }
  }
  [1]=>
  array(5) {
    [0]=>
    array(3) {
      ["bimbel_kode"]=>
      string(2) "P2"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      float(8.5)
    }
  }
  [2]=>
  array(5) {
    [0]=>
    array(3) {
      ["bimbel_kode"]=>
      string(2) "P3"
      ["kriteria_kode"]=>
      string(2) "C2"
      ["nilai"]=>
      float(11.5)
    }
  }
}

换句话说,我想添加基于 bimbel_kode 和 criteria_kode 的值 有人能帮我吗? 我只需要基于 Bimbel_code 和 code_criteria 的每个数组的总数

我用它来运行我的代码

foreach($arsubkrit as $num => $values) {
    $sum += $values->nilai;
}

遵循这个技巧link 但我遇到了一个错误

我尝试使用这个

     foreach($arsubkrit as $value) {
            foreach($value as $key => $number) {
                (!isset($res[$key])) ?
                $res[$key] = $number->nilai :
                $res[$key] += $number->nilai;
            }
        }

以下引用link

这是我使用该代码时的结果

Array ( [0] => 5.5 [1] => 3.75 [2] => 5.5 [3] => 9.75 [4] => 6.5 )

与我预期的结果相差甚远

【问题讨论】:

  • 到目前为止你有没有尝试过什么?
  • 是的,我已经编辑了我的问题并添加了我的参考资料。

标签: php arrays multidimensional-array


【解决方案1】:

现在我找到了解决问题的方法。 像这样组合 array_sum 和 array_column

 $nilai_sub = [];
     foreach ($arsubkrit as $key => $value) {
         $nilai_sub[] = [
             'bimbel_kode' => $value[$key]->bimbel_kode,
             'kriteria_kode' => $value[$key]->kriteria_kode,
             'nilai' => array_sum(array_column($arsubkrit[$key],'nilai'))
         ];
     }

现在,结果和我预期的一样。

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2022-01-01
    相关资源
    最近更新 更多