今回はPHPの配列についてです。
まず以下のような配列を用意します。
$array1 = array( "key1" => 1, "key2" => 2, "key3" => 3, );
指定したキーが配列に含まれるか調べる : array_key_exists
指定したキーが配列に含まれるかどうかは array_key_exists を使って調べることできます。
echo array_key_exists("key4", $array1) ? "true" : "false";
引数1でキー、引数2に配列を指定します。
“key4″は存在しないキーなので false が出力されます。
“key1″や”key2″などであれば存在するのでtrueとなります。
指定した値が配列に含まれるか調べる : in_array
指定した値が配列に含まれるか調べる場合は in_array を使います。
echo in_array(3, $array1) ? "true" : "false";
3 は “key3″の値として存在しているため true が出力されます。
4 など含まれない値の場合は false となります。
配列から別の配列を生成する : array_map
配列の各要素を使用して別の配列を生成したい場合は array_map が使用できます。
$array2 = array_map(function($value) {
return $value * 2;
}, $array1);
echo var_dump($array2);
array_mapは引数1にコールバック関数、引数2に配列を指定します。
コールバック関数は配列の各要素を引数として呼ばれます。
ここでは値を2倍にして返しているので下記のような配列が生成されます。
array(3) {
["key1"]=>
int(2)
["key2"]=>
int(4)
["key3"]=>
int(6)
}
各キーの値が2倍になっています。
また、array_mapの引数3でさらに配列を渡すこともできます。
$array3 = array_map(function($key, $value) {
return $key . "=" . $value;
}, array_keys($array1), array_values($array1));
echo var_dump($array3);
引数2はキーの配列、引数3は値の配列を渡しているので、
コールバック関数ではそれぞれを受け取るために引数が2つ必要となります。
そしてコールバック関数では key=value の形式の文字列を返しているので
下記のような配列が生成されます。
array(3) {
[0]=>
string(6) "key1=1"
[1]=>
string(6) "key2=2"
[2]=>
string(6) "key3=3"
}
