PHPで配列操作をする際にあの処理をしたいんだけど、何の関数だっけなーっていうことがあるので、いくつか関数についてまとめます。
array_search:検索
指定した値で配列を検索し、ヒットした最初のキーを返します。
PHP
$array = [0 => 'hoge', 1 => 'huga', 2 => 'piyo', 3 => 'huga'];
$key = array_search('piyo', $array);
// $key = 2
$key = array_search('huga', $array);
// $key = 1
array_keys:検索
array_keys
は配列のキーを返すイメージが大きいですが、引数を与えることで指定した値で配列を検索し、ヒットしたキーを取得することができます。
PHP
$array = [0 => 'hoge', 1 => 'huga', 2 => 'piyo', 3 => 'huga'];
$keys = array_keys($array);
// $keys = [0, 1, 2, 3]
$keys = array_keys($array, 'huga');
// $keys = [1, 3]
array_filter:絞り込み
コールバック関数を用いて配列を絞り込みます。
PHP
function isHuga($var) {
return $var === 'huga';
}
$array = [0 => 'hoge', 1 => 'huga', 2 => 'piyo', 3 => 'huga'];
$filtered = array_filter($array, 'isHuga');
// $filtered = [1 => 'huga', 3 => 'huga']
空・null・falseの除去
コールバックを渡さない場合、各要素をboolean型にキャストし、falseのものが除去されます。
PHP
$array = [
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => '0',
6 => 0,
];
$array2 = array_filter($array);
// $array2 = [0 => 'foo', 2 => -1]
array_map:各要素にコールバックの適用
配列の各要素にコールバックを適用した配列を返します。
数値の配列でそれぞれの要素を2倍することや、文字列で先頭に文字を付与するなどの使い方ができます。
PHP
function addStar($var) {
return '★ ' . $val;
}
$array = [0 => 'hoge', 1 => 'huga', 2 => 'piyo', 3 => 'huga'];
$array2 = array_map('addStar', $array);
// $array2 = [0 => '★ hoge', 1 => '★ huga', 2 => '★ piyo', 3 => '★ huga']
array_reduce:コールバックを通して配列を1つにまとめる
コールバックを繰り返し適用し、配列を1つの値にまとめます。
PHP
function sum($carry, $item) {
$carry += $item;
return $carry;
}
$a = [1, 2, 3, 4, 5];
$b = array_reduce($a, "sum", 3);
// $b = 18
初期値の3に配列の1~5を順に足していくため、3 + 1 + 2 + 3 + 4 + 5 = 18 となります。
[AD]