SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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);

関連するメモ

コメント