PHPで配列を使う(2)

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

スポンサーリンク