PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのarray_walk_recursive()関数の使い方を徹底解説

array_walk_recursive()関数は、ユーザー定義関数を配列のすべての要素に対して再帰的に適用するための組み込み関数です。多次元配列の各要素(リーフノード)に関数を処理させたい場合に非常に便利です。

構文

array_walk_recursive(arr, custom_func, parameter)

パラメータ

  • arr − 処理の対象となる配列を指定します。必須です。

  • custom_func − 各要素に適用するユーザー定義関数を指定します。必須です。コールバック関数には通常、「値」と「キー」がこの順で引数として渡されます。

  • parameter − カスタム関数に追加で渡すパラメータを指定します。省略可能です。指定した場合は、コールバック関数の第3引数として渡されます。

戻り値

array_walk_recursive()関数は、成功した場合に TRUE、失敗した場合に FALSE を返します。

ポイント: 通常の array_walk() 関数は多次元配列の内部配列までは処理しませんが、array_walk_recursive() はネストされた配列の末端にある要素まで再帰的に処理を行います。

使用例1:基本的な使い方

以下は、多次元配列のすべての要素に対してキーと値を出力する例です。

<?php
function display($val,$key) {
   echo "Key $key with the value $val<br>";
}
$arr1 = array("p"=>"accessories","q"=>"footwear");
$arr2 = array($arr1,"1"=>"electronics");
array_walk_recursive($arr2,"display");
?>

出力結果

Key p with the value accessories
Key q with the value footwear
Key 1 with the value electronics

この例では、$arr2 の中に含まれる配列 $arr1 の要素も含めて、すべての末端要素が再帰的に処理されていることがわかります。

使用例2:追加パラメータを渡す方法

次に、第3引数を使ってカスタム関数に追加のパラメータを渡す例を見てみましょう。

<?php
function display($val,$key, $extra) {
   echo "Key $key $extra $val<br>";
}
$arr1 = array("p"=>"accessories","q"=>"footwear");
$arr2 = array($arr1,"5"=>"electronics");
array_walk_recursive($arr2,"display", "with value");
?>

出力結果

Key p with the value accessories
Key q with the value footwear
Key 5 with the value electronics

このように、第3引数「with value」がコールバック関数の $extra に渡され、出力メッセージの中で利用されています。

まとめ

  • array_walk_recursive() は多次元配列の全要素にユーザー定義関数を再帰的に適用できる。

  • コールバック関数には値・キーの順で引数が渡され、必要に応じて追加パラメータも指定できる。

  • 戻り値は成否を表す TRUE / FALSE のみで、配列自体を変更する場合はコールバック内で参照渡し(&$val)を使う。

  1. PHPのkey()関数とは?配列からキーを取得する方法をわかりやすく解説

    PHPのkey()関数は、配列からキーを取得するための関数です。配列の内部ポインタが現在指している要素のキーを返します。通常の配列でも連想配列でも使用でき、配列操作の際に非常に便利な関数です。基本構文key(arr)パラメータarr − キーを取得したい対象の配列を指定します。戻り値key()関数は、内部ポインタが指している配列要素のキーを返します。連想配列の場合は文字列のキーが、通常の配列の場合は数値のインデックスが返されます。使用例1:基本的な使い方以下は、key()関数の基本的な使用例です。<?php$arr = array("Electronics", &qu

  2. PHPのarray_key_exists()関数とは?使い方とサンプルコードを解説

    PHPのarray_key_exists()関数は、指定したキーが配列内に存在するかどうかをチェックするための関数です。キーが存在する場合は true を返し、存在しない場合は false を返します。基本構文array_key_exists(key, arr)パラメータkey − 存在を確認したいキーを指定します。文字列や整数など、配列のキーとして有効な値を指定できます。arr − キーを検索する対象となる配列を指定します。戻り値array_key_exists()関数は、指定したキーが配列内に存在すれば true を、存在しなければ false を返します。使用例以下の例では、連想配列の中