array_walk

関数の概要

PHPの array_walk 関数は、配列の各要素に対してユーザー定義のコールバック関数を適用するための便利な関数です。配列をループで回す代わりに、この関数を使うことで簡潔に処理を実行できます。特に配列の値を参照渡しで変更したい場合に有効です。

パラメータの説明

  • array(配列): 対象となる配列を指定します。参照渡しで渡されるため、コールバック内で配列の値を変更できます。
  • callback(呼び出すコールバック関数): 配列の各要素に対して実行する関数を指定します。この関数は少なくとも2つの引数(値とキー)を受け取ります。
  • userdata(任意): コールバック関数に渡したい追加の引数がある場合に指定します。

戻り値

成功すると true を返します。失敗すると false を返します。配列自体は参照渡しで処理されるため、配列内の値の変更は直接反映されます。

使用例

基本的な使い方

<?php
$fruits = ["apple", "banana", "cherry"];

array_walk($fruits, function (&$item, $key) {
    $item = strtoupper($item);
});

print_r($fruits);
?>

この例では、配列 $fruits の各要素を大文字に変換しています。コールバック関数内で値を参照渡ししているため、元の配列が変更されます。

キーも同時に利用する例

<?php
$prices = ["apple" => 100, "banana" => 150, "cherry" => 120];

array_walk($prices, function (&$value, $key) {
    echo $key . " is " . $value . " yen.n";
});
?>

配列のキーと値の両方を使って、商品名と価格を出力しています。値を変更してはいませんが、処理内容は自由に定義可能です。

userdataを使って処理を変える例

<?php
$numbers = [1, 2, 3, 4, 5];
$multiplier = 3;

array_walk($numbers, function (&$item, $key, $multiplier) {
    $item *= $multiplier;
}, $multiplier);

print_r($numbers);
?>

この例では、コールバック関数の第三引数 $multiplier を利用して、配列の各要素に3倍の処理をしています。このように userdata を活用すると、外部パラメータをコールバックに渡して柔軟な処理が可能です。

関連する関数

  • array_map – 配列の各要素を変換して新しい配列を返す
  • array_filter – 条件に合う要素だけを抽出する
  • array_reduce – 配列の要素を累積的に処理し1つの値にまとめる

まとめ

array_walk は配列の各要素に対して簡潔に繰り返し処理ができる関数です。特に配列の値をその場で書き換えたいときに便利で、引数にコールバック関数を指定することで柔軟に操作できます。外部のパラメータを渡したい場合は userdata を利用するとより汎用的です。配列の操作において覚えておくと効率アップにつながる関数の一つです。