こんばんは。きわさです。
PHPの配列を扱う関数のメモ
次のような配列があったとします。
$array = [ ["A", "apple", 100], ["B", "orange", 20], ["C", "apple", 30], ];
指定したカラムを取得 : array_column
たとえば $array から [“A”, “B”, “C”] のような配列を取得したい場合は、array_columnが使えます。
$array1 = array_column($array, 0);
$array1を見てみます。指定したカラム(0)の配列になっています。
array(3) { [0]=> string(1) "A" [1]=> string(1) "B" [2]=> string(1) "C" }
指定した値のキーを取得 : array_search
$array から、値が orange である要素のキーを取得したい場合は次のように取得できます。
$key = array_search("orange", array_column($array, 1));
前項の array_column との合わせ技で、まずカラム1の配列を取得し、そこから値が orange である要素のキーを取得しています。
配列の要素をフィルタリング: array_filter
次は、$array からカラム1の値が apple の要素のみの配列を取得します。
$array2 = array_filter($array, function($value){ return $value[1] == "apple"; });
array_filter は引数1の配列の要素を順に引数2に渡し、結果が true の要素のみの配列を返します。
この例では、カラム1が apple の場合に true になります。
また、取得した配列は、キーを保っています。$array2を見てみると[1]がありません。
array(2) { [0]=> array(3) { [0]=> string(1) "A" [1]=> string(5) "apple" [2]=> int(100) } [2]=> array(3) { [0]=> string(1) "C" [1]=> string(5) "apple" [2]=> int(30) } }
配列のすべての値を取得 : array_values
前項のように、キーを保持したままだと困る場合もあります。
そんなときは array_values で詰めることができます。
$array3 = array_values($array2);
$array3を見てみます。キーがつめられています。
array(2) { [0]=> array(3) { [0]=> string(1) "A" [1]=> string(5) "apple" [2]=> int(100) } [1]=> array(3) { [0]=> string(1) "C" [1]=> string(5) "apple" [2]=> int(30) } }
配列をマージ : array_merge
複数の配列をマージしてみます。
先ほどの[1]が抜けた配列 $array2 に対して、もとの配列 $array をマージしてみます。
$array4 = array_merge($array2, $array);
$array4を見てみます。キーはつめられるようです。
array(5) { [0]=> array(3) { [0]=> string(1) "A" [1]=> string(5) "apple" [2]=> int(100) } [1]=> array(3) { [0]=> string(1) "C" [1]=> string(5) "apple" [2]=> int(30) } [2]=> array(3) { [0]=> string(1) "A" [1]=> string(5) "apple" [2]=> int(100) } [3]=> array(3) { [0]=> string(1) "B" [1]=> string(6) "orange" [2]=> int(20) } [4]=> array(3) { [0]=> string(1) "C" [1]=> string(5) "apple" [2]=> int(30) } }