次のデータセット ( $data
) では、多次元配列を作成しています。一意のキー ( ) ごとに、それに関連付けられた値a
の配列があります。b
$data = [
['a' => 1, 'b' => 23],
['a' => 1, 'b' => 97],
['a' => 2, 'b' => 23],
['a' => 1, 'b' => 47],
['a' => 3, 'b' => 23],
];
$result = [];
foreach ($data as $d) {
if (!isset($result[$d['a']]))
$result[$d['a']] = [];
$result[$d['a']][] = $d['b'];
}
print_r($result);
/*
Output should be:
[
1 => [23, 97, 47],
2 => [23],
3 => [23],
]
*/
そのif (!isset($result[$d['a']])) $result[$d['a']] = [];
部分は醜いです。この望ましい出力を構築するためのよりセクシーで効率的な方法はありますか?
更新:
みんなありがとう、私は(初期化さえせずに$result = [];
)行くことができたようです
foreach ($data as $d)
$result[$d['a']][] = $d['b'];