関数・クラス解説

array_walk

version:PHP 4, PHP 5, PHP 7 (公式)

配列の全ての要素にユーザー定義の関数を適用する

公式リファレンス

書式

array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] ) : bool

説明

array 配列の各要素にユーザー定義関数 callback を適用します。

array_walk() は array の内部配列ポインタに影響されません。array_walk() はポインタの位置に関わらず配列の全てに渡って適用されます。

パラメータ

array
入力の配列。
callback
通常、 callback は引数を二つとります。 array パラメータの値が最初の引数、 キー/添字は二番目の引数となります。
注意: callback により配列の値そのものを変更する必要がある場合、 callback の最初の引数は 参照 として渡す必要があります。この場合、配列の要素に加えた変更は、 配列自体に対して行われます。
注意: 内部関数の多く (たとえば strtolower()) は、 期待しているよりも多い引数を受け取ると警告が発生します。 そのため、callback に直接指定することはできません。
変更される可能性があるのは配列の値だけであり、 その構造を変更することはできません。つまり、 プログラマは要素の追加や削除そして並べ替えなどができないということです。 コールバック関数がこの条件を満たさない場合は、 この関数の動作は未定義で予期せぬ結果を得ることになります。
userdata
オプションの userdata パラメータが指定された場合、 コールバック関数 callback への三番目の引数として渡されます。

返値

TRUE を返します。

エラー

PHP 7.1.0 以降では、callback 関数が 2 つより多いパラメータ (配列メンバーの値およびキー)を必要とする場合、 ArgumentCountError がスローされます。 前は、callback 関数が 2 つより多いパラメータを必要とする場合、 array_walk()がcallback をコールする度にエラーレベル E_WARNING が 発生していました。

サンプル

例1 array_walk() の例

$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); function test_alter(&$item1, $key, $prefix) {     $item1 = "$prefix: $item1"; } function test_print($item2, $key) {     echo "$key. $item2\n"; } echo "Before ...:\n"; array_walk($fruits, 'test_print'); array_walk($fruits, 'test_alter', 'fruit'); echo "... and after:\n"; array_walk($fruits, 'test_print');

上の例の出力は以下となります。

Before ...: d. lemon a. orange b. banana c. apple ... and after: d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple

参考

  • array_walk_recursive() - 配列の全ての要素に、ユーザー関数を再帰的に適用する
  • iterator_apply() - ユーザー関数をイテレータのすべての要素でコールする
  • list() - 配列と同様の形式で、複数の変数への代入を行う
  • each() - 配列から現在のキーと値のペアを返して、カーソルを進める
  • call_user_func_array() - パラメータの配列を指定してコールバック関数をコールする
  • array_map() - 指定した配列の要素にコールバック関数を適用する
  • foreach
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール