今回は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" }