array_walk - ユーザー定義の関数を全ての要素に適用する
array_walkは、ユーザーが定義したコールバック関数を全ての要素に適用する関数です。array_map()と似ていますが、こちらは配列を改造するためのものではありません。
構文
パラメータ
&$array
対象の配列。
$callback
各要素を引数にして実行されるコールバック関数。第1引数に要素の値、第2引数に要素のキー、第3引数にarray_walk()の第3引数、が渡される。
$userdata
第3引数を指定した場合、コールバック関数の第3引数として渡される。
返り値
bool
処理に成功した場合にtrue、失敗した場合にfalseを返す。
サンプルコード
<?php
$array = [
"a" => 1,
"b" => 2,
"c" => 3,
] ;
function callback( $a, $b, $c ) {
echo "引数は、" . $a . "、" . $b . "、" . $c . "です。<br>" ;
}
$response = array_walk( $array, "callback", "custom" ) ;
デモ
使用例
コールバック関数がどのように引数を受け取り、何回実行されるのかを確認して下さい。
<?php
/*** このコードは編集できます。 ***/
$array = [
"a" => 1,
"b" => 2,
"c" => 3,
] ;
function callback ( $a, $b, $c ) {
echo "引数は、" . $a . "、" . $b . "、" . $c . "です。<br>" ;
}
$response = array_walk( $array, "callback", "custom" ) ;
var_dump( $response ) ;
処理は第一次元まで
array_walk()の処理は、一次元目にまで、適用されます。
<?php
/*** このコードは編集できます。 ***/
$array = [
"a" => 1,
"b" => [
"A" => 2,
"B" => 3,
"C" => 4,
],
"c" => 5,
] ;
function callback ( $a, $b, $c ) {
echo "キーは、" . $b . "、" . $c . "です。<br>" ;
}
$response = array_walk( $array, "callback", "custom" ) ;
var_dump( $response ) ;
array_walk_recursive()なら、深い階層にまで再帰的に適用されます。
<?php
/*** このコードは編集できます。 ***/
$array = [
"a" => 1,
"b" => [
"A" => 2,
"B" => 3,
"C" => 4,
],
"c" => 5,
] ;
function callback ( $a, $b, $c ) {
echo "キーは、" . $b . "、" . $c . "です。<br>" ;
}
$response = array_walk_recursive( $array, "callback", "custom" ) ;
var_dump( $response ) ;
参考
- PHP: array_walk
- PHPの公式リファレンス。
関連記事
- array_slice
- 配列の一部を切り取る。
- array_replace
- 配列を置換して合成する。
- array_intersect
- 複数の配列の中の共通の値を確認する。
- array_reduce
- 配列を簡約化する。
- array_walk_recursive
- ユーザー定義の関数を全ての要素に、再帰的に適用する。
- array_map
- 配列の各要素に処理を適用する。