PHPでarray_walkを使う方法【初心者向け】
初心者向けにPHPでarray_walkを使う方法について解説しています。コールバック関数を使うことによって、配列などの各値に対して独自の処理を適用させることが出来ます。array_walk関数を使うと見通しの良いコードを書くことが出来ます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
PHPでarray_walkを使う方法について解説します。
array_walk関数を使うと、配列の各要素に対して処理を適用させることが出来ます。
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。
今回は、PHPに関する内容だね!
どういう内容でしょうか?
PHPでarray_walkを使う方法について詳しく説明していくね!
お願いします!
array_walkとは
PHPに標準で用意されている関数で、配列の各要素に対して指定したcallback処理を行えます。foreach文で同様の処理を実現することができますが、array_walkを使用するとコード量を抑えて書けます。
また、ほとんど同様の処理ができる関数としてarray_map関数があります。
こちらも配列の各要素に対して指定したcallback処理を行えますが、array_walkと何が違うのでしょうか。
では、array_walkとarray_mapをどう使い分けるのか、それぞれの関数の差異を説明していきます。
1つ目の違いは、array_walkは各配列の要素に対して値を上書きすることができますが、array_mapはそれができません。配列の要素を上書きしたい場合はarray_walkを使用して、上書きする必要がない場合はarray_mapを使いましょう。
2つ目の違いは、array_walkは添字/キーをcallbackの引数に取れるので、値とキーを利用した処理を行えます。一方でarray_mapではcallbackの引数には値しか渡ってこないので、添字/キーを扱う処理が行なえません。添字/キー・値を利用する処理を行う場合は、array_walkを使いましょう。
array_walkの書き方
第1引数には対象となる配列を渡します。(※必須)
第2引数には各要素に対して行う処理をcallbackで渡します。(※必須)
このcallbackは第1引数に各要素の値、第2引数に各の要素のキー/添字を受け取ります。
第3引数には第2引数で渡したcallbackの第3引数に渡せる値を渡します。(※任意)
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
実際に書いてみよう
// 数字が入っている配列 $numbers = [1,2,3,4,5]; // callbackの第1引数を参照渡しすることで、上書きが可能になります array_walk($numbers, function(&$val, $index) { // 添字/キーを出力します。今回は添字になるので0~4までの値が$indexに渡ってきます echo '添字/キーは '.$index.PHP_EOL; $val = $val * 10; }); // 各要素が10倍になっています print_r('【array_walkで各要素を10倍にする】'); print_r($numbers); // 配列の中身をリセットする $numbers = [1,2,3,4,5]; // array_mapは第1引数にcallback、第2引数に配列です // array_walkと同様にcallbackの第1引数を参照渡しにします array_map(function(&$val) { $val = $val * 10; }, $numbers); // 各要素に変化はなく上書きされていないことがわかります print_r('【array_mapで各要素を10倍しようとしたけど、更新されてない】'); print_r($numbers);
この記事を監修してくれた方
青木 敦史(あおきあつし) Webエンジニアの経験は5年ほどです。TechAcademyではPHP/Laravelコースを担当しています。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。