PHPプログラミング

最終更新日:
公開日:

レシピ

配列

配列のすべての要素に対して同じ関数を実行する

array_walk関数を使い、配列に入っているすべての要素に対して同じ関数を実行させることができます。

この記事のポイント

  • array_walk関数は1つ目のパラメータに配列を渡し、2つ目のパラメータに関数を渡して使う
  • array_walk関数には3つ目のパラメータにプレフィックスを指定することができる

目次

概要

最初にarray_walk関数について解説します。

array_walk関数のパラメータ

前2つのパラメータである「配列」と「関数名」は必須です。
オプションのプレフィックスは実行する関数によって、必要な場合に指定します。
指定する関数名は「'(シングルクォーテーション)」、または「"(ダブルクォーテーション)」で囲みます。

1つ目のパラメータである配列を渡すと、その配列の先頭から要素を1つずつ取り出して、2つ目のパラメータで指定した関数を実行します。
この処理が要素の数だけ繰り返されるので、簡易なループ文のような扱い方ができる関数です。

それでは、実際にコードの動作をみていきましょう。

配列のキー&値のペアをすべて出力

配列から値を1つずつ取り出し、キーと値のペアを出力する簡単な関数を実行してみます。

PHP コード例

// 渡されたキーと値を出力
function dumpValue( $value, $key) {
  var_dump($key . ' : ' . $value);
}

// 配列を宣言
$animals = array(
  "dog" => "Bob",
  "cat" => "Carlie",
  "fox" => "Taro",
);

array_walk( $animals, 'dumpValue');

実行結果

出力結果 その1

解説

あらかじめ、dumpValue関数と配列$animalsを宣言します。

最終行のarray_walk関数では、$animalsの先頭から要素を1つずつ取り出し、dumpValue関数へ渡して実行しています。
今回の例では配列に入ってる要素が3つなので、dumpValue関数も3回実行されました。

下記のように、上記のコードと全く同じ処理をループ文で書くことも可能です。

PHP コード例

foreach( $animals as $key => $value ) {
  var_dump($key . ' : ' . $value);
}

関数にプレフィックスを渡す

次に、3つ目のパラメータである「プレフィックス」を指定して実行してみます。

PHP コード例

// 渡されたキー、値、プレフィックスを出力
function dumpValue2( $value, $key, $prefix) {
  var_dump( $prefix . ' ' . $key . ' : ' . $value);
}

// 配列を宣言
$animals = array(
  "dog" => "Bob",
  "cat" => "Carlie",
  "fox" => "Taro",
);

array_walk( $animals, 'dumpValue2', 'GrayPark');

実行結果

出力結果 その2

今回は3つ目のパラメータにプレフィックスとして「GrayPark」を関数に渡しています。
出力結果から、渡した値やキーと一緒にプレフィックスも渡っていることが確認できました。

array_walk関数 – php.net