##はじめに
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