【php】配列の配列(2次元配列)の各要素の1個目を集めたい
問題
以下のような配列があって、配列の中の配列のそれぞれ1個目の値を集めてきたいのですが、どうすると簡単でしょう。
$a = array(
0 => array(12, '山田', 'B'),
1 => array(15, '田中', 'A'),
2 => array(23, '佐藤', 'C'),
3 => array(45, '加藤', 'A'),
4 => array(56, '高橋', 'D'),
);
// ↓
// array(12, 15, 23, 45, 56) を得たい
答え
素直にやれば、foreach。
$b = array();
foreach ($a as $v) {
$b[] = $v[0];
}
ちょっと工夫すると、
配列の1個目の要素を取得する関数がある → reset()
配列の各要素にコールバックを適用し、すべての結果を配列にできる関数がある → array_map()
組み合わせると。
$b = array_map('reset', $a);
どちらも結果はこのとおり。
array(5) {
[0]=>
int(12)
[1]=>
int(15)
[2]=>
int(23)
[3]=>
int(45)
[4]=>
int(56)
}
「1個目」だからreset()でうまくいくのであって、2個目などは無理。「最後の要素」ならend()で可能。
ほかにも
以下もあり。
array_column($a, 0);
コメント