こんばんは。きわさです。
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)
}
}
