PHPの便利な配列関数


はじめに

PHPの配列操作で、個人的によく使っている関数などを書きます。

配列への変換

String→Array

test.php
<?php
    $foo_string = 'aaa,bbb,ccc';
    $foo_array = explode(',', $foo_string);

    var_dump($foo_string);          
    // string 'aaa,bbb,ccc' 

    var_dump($foo_array);
    // array(size=3) 
    //   0 => string 'aaa' 
    //   1 => string 'bbb'
    //   2 => string 'ccc'

implode()を使うと、Array→String の逆変換ができます。

Object→Array

test.php
<?php
    $foo_obj = new stdClass();
    $foo_obj->key = 'val';
    $foo_array = json_decode(json_encode($foo_obj), true);

    var_dump($foo_obj);
    // object(stdClass) 
    //   public 'key' => string 'val'

    var_dump($foo_array);    
    // array(size=1) 
    //   'key' => string 'val'

Array型へのキャストやget_object_vars()での配列変換では、ネストしたオブジェクトを配列化してくれないので、
多少読みづらくてもjson_encode()を使って変換したいです。

配列内の検索

配列に値があるか

test.php
<?php
    $foo = ['1' => 'aaa', '2' => 'bbb', '3' => 'ccc'];
    $bar = 'bbb';
    $is_exists = in_array($bar, $foo, true);

    var_dump($is_exists);
    // boolean true

in_array()の第3引数をtrueにすると、厳密な型比較をします。

配列のキーに値があるか

test.php
<?php
    $foo = ['1' => 'aaa', '2' => 'bbb', '3' => 'ccc'];
    $bar = '2';
    $is_exists = array_key_exists($bar, $foo);

    var_dump($is_exists);
    // boolean true

配列の整形

配列から単一のカラムの配列を生成

test.php
<?php
    $foo = [
        [
            'name' => 'aaa',
            'gender' => 'man',
        ],
        [
            'name' => 'bbb',
            'gender' => 'male',
        ],
        [
            'name' => 'ccc',
            'gender' => 'man',
        ],
    ];
    $bar = array_column($foo, 'name');

    var_dump($bar);
    // array (size=3)
    // 0 => string 'aaa'
    // 1 => string 'bbb'
    // 2 => string 'ccc'

例示しているのはかなり単純な例ですが、第3引数の設定などをするとかなり柔軟に配列を生成可能です。

配列の結合

test.php
<?php
    $foo = ['aaa' => 'bbb'];
    $bar = ['ccc' => 'ddd'];
    $merged_array = array_merge($foo, $bar);

    var_dump($merged_array);
    // array (size=2)
    // 'aaa' => string 'bbb' 
    // 'ccc' => string 'ddd' 

さいごに

PHPは配列の関数が数多く用意されているので、配列を扱うのが楽しいです。
その他の配列関数については、公式のリファレンスをご参照下さい。
https://www.php.net/manual/ja/ref.array.php