関数 array_walk_recursive

関数 array_walk_recursive は、指定した 関数を多次元配列のすべての要素に適用します。 成功時に true を返し、 エラー発生時には false を返します。 最初のパラメータとして配列を受け取り、 2番目のパラメータとしてコールバックを受け取ります。

コールバックには2つのパラメータが渡されます。 最初のパラメータは配列要素の値、 2番目のパラメータはキーです。

関数に渡された配列自体は 変更されません。しかし、これは 参照渡しを使用することで実現できます。

構文

phparray_walk_recursive(array|object &$array, callable $callback, mixed $arg = null): bool

例

多次元配列を走査し、 そのキーと要素を出力してみましょう:

php<?php
  $arr = [
    'a' => 1,
    'b' => 2,
    'c' => [
      'd' => 3,
      'e' => 4,
    ],
  ];
  
  array_walk_recursive($arr, function($elem, $key) {
    echo $key . ' ' . $elem . '<br>';
  });
?>

コードの実行結果:

php'a 1'
'b 2'
'd 3'
'e 4'

例

配列を走査し、 その要素を 2乗してみましょう:

php<?php
  $arr = [
    'a' => 1,
    'b' => 2,
    'c' => [
      'd' => 3,
      'e' => 4,
    ],
  ];
  
  array_walk_recursive($arr, function(&$elem, $key) {
    $elem = $elem ** 2;
  });
  
  var_dump($arr);
?>

コードの実行結果:

php[
  'a' => 1,
  'b' => 4,
  'c' => [
    'd' => 9,
    'e' => 16,
  ],
];

関連項目

  • 関数 array_walk,
    配列の要素に関数を呼び出す
  • 関数 array_map,
    配列の要素に関数を適用する
  • 関数 array_filter,
    配列をフィルタリングする
  • 関数 array_reduce,
    配列を畳み込む