LoginSignup
0

More than 3 years have passed since last update.

PHPの便利な配列関数

Last updated at Posted at 2019-12-16

はじめに

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0