Associative array, sum values of the same keyにあるスレッドを展開したいと思います。連想配列、同じキーの値: "兄弟"値の合計と平均を取得
OPが求められます。
代わりにキー "会議" を3回繰り返しを持ちます。私は にそれを一度持っていき、3つの値を1つにまとめます。
与えられた答えは次のとおりです。
$sum = array_reduce($data, function ($a, $b) {
isset($a[$b['event']]) ? $a[$b['event']]['budget'] += $b['budget'] : $a[$b['event']] = $b;
return $a; });
私が二つ以上の値を持つ連想配列を持っています。上記のような関数を使いたいですが、すべての値をまとめて「予算」だけではありません。ここ は、私の状況を反映している例です。
次のように配列である:
$data = array(
0 => array(
'event' => 'Conference',
'budget' => 3700,
'people' => 200,
'rate' => 3000,
),
1 => array(
'event' => 'Conference',
'budget' => 500,
'people' => 200,
'rate' => 6000,
),
2 => array(
'event' => 'Showroom',
'budget' => 1000,
'people' => 400,
'rate' => 30000,
),
3 => array(
'event' => 'Mission Chez client',
'budget' => 2000,
'people' => 200,
'rate' => 3000,
),
4 => array(
'event' => 'Séminaire',
'budget' => 700,
'people' => 40,
'rate' => 3000,
),
5 => array(
'event' => 'Livraison',
'budget' => 4000,
'people' => 2,
'rate' => 3000,
),
6 => array(
'event' => 'Conference',
'budget' => 334,
'people' => 200,
'rate' => 9000,
),
);
私は上記のコードを使用している場合は、私は次のように、一つのエントリに「会議」を削減することができるようになります。
[0] => Array
(
[event] => Conference
[budget] => 4534
[people] => 200
[rate] => 5000
)
予算の数字は正しいです。しかし、人々の姿はそうではありません。 「人」と「予算」の合計をどのようにして得ることができるので、 [人] => 600ですか?
最後に、簡単に平均「」の値を得ることは可能ですか?だから会議のためには((3000 + 6000 + 9000)/ 3 = 6000)。あなたが試みることができるの平均値については
$sum = array_reduce($data, function ($a, $b) {
if (!isset($a[$b['event']])) {
$a[$b['event']] = $b;
} else {
$a[$b['event']]['budget'] += $b['budget'];
$a[$b['event']]['people'] += $b['people'];
$a[$b['event']]['rate'] += $b['rate'];
}
return $a; });
を試してみてください
[0] => Array
(
[event] => Conference // Key that appears multiple times
[budget] => 4534 //Sum of all conference budget
[people] => 600 //Sum of all conference people
[rate] => 5000 //Average rate of conference
)
ですあなたはここにサードパーティの図書館を持ち込むことに反対しましたか? Laravelのコレクションには、これを手助けするいくつかの方法があります。 – FatBoyXPC
公正な質問。それが第三者の図書館の道を行く必要があるならば、そうしてください。 :) しかし、これはかなり控えめなオンラインダッシュボードプロジェクトであり、ほんの数人のパートナーによって使用されています。 $$を節約するために、できるだけ共有ホスティングを購入したいと思います。私が理解しているように、共有ホスティングはあなたがインストールできるものに関して制限されることがあります。うーん...あなたは私に不思議に思っている。 – Chris
@FatBoyXPCなぜ単純なループのために巨大な大砲を持って来たいですか?この場合、サードパーティ製のライブラリは、C言語のPHP拡張機能でない限り、高速化できません。より読みやすいものの、確かに効率的ではありません。 – Zefiryn