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のものが除去されます。
$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 となります。
コメント