array_columnで特定のカラムをキーにして他の行を値にする:メモ

個人的メモ用に。毎度ですがどれをどう使うのだったか後で探すのが面倒になるので記事にして残します。こうした方が記憶に残るというのもありますが。

実現したいこと

  • 多次元配列に対し、キーを任意の値と入れ替える

サンプルコード

言葉で書くとややこしい気もしますが、上記を参考にarray_columnを使い第二引数をnullにすることで、以下のような状態に変更する動作です。


var_dump($array);
array(3) {
 [0] => array(2) {
    ['key1'] => string(1) "a"
    ['key2'] => string(1) "b"
 }
 [1] => array(2) {
    ['key1'] => string(1) "c"
    ['key2'] => string(1) "d"
 }
 [2] => array(2) {
    ['key1'] => string(1) "e"
    ['key2'] => string(1) "f"
 }
}

上記をarray_columnの第二引数をnullにして用いることで以下のようにできます。


$result = array_column($array, null, 'key1');
var_dump($result);
array(3) {
 ['a'] => array(1) {
    ['key2'] => string(1) "b"
 }
 ['c'] => array(1) {
    ['key2'] => string(1) "d"
 }
 ['e'] => array(1) {
    ['key2'] => string(1) "f"
 }
}

結び

参考に挙げた記事の一つ目に以下が書かれており、この目的で用いました。

array_search() とか in_array() とか、検索系 array 関数は遅いので、いる・いない、ある・ないを調べるなら、検索対象をキーにして、 isset() や array_key_exists() を使う。

array_search()を使うのではなく、対象の配列自体を作り替えてisset()などが使えるようにするとうことですね。

参考

0人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄