ユーザー定義関数を学習していますが、可変関数、高階関数仕組みについてよくわからなかったので相談します。
下記内容について3点わからない点があったため、そちらについてご教授を頂ければと思います。
1.このsetFruits関数の作成目的やメリットはなんでしょうか?
高階関数ということで、別のデータや処理を引数にセットし利用できるという汎用性をもたせることが目的でしょうか?
function setFruits(array $array, callable $func){ foreach($array as $key => $value){ $func($value, $key); } } function showItem($value, $key){ echo $key . ':' . $value . '<br>'; } $data = ['りんご', 'バナナ', '桃']; setFruits($data, 'showItem');
【出力結果A】
0:桃 1:りんご 2:バナナ
2.記述の仕方について
別の方の記述で
$data = ['りんご', 'バナナ', '桃']; function showItem($value, $key){ echo $key . ':' . $value . '<br>'; } function setFruits(array $array, callable $func){ foreach($array as $key => $value){ $func($value, $key); } } setFruits($data, 'showItem');
とあり、こちらの方が、処理の手順がわかりやすかったです。
わかりやすかった理由として
->データ用意
->関数作成
->関数作成
->関数実行
という取り扱うデータから扱うプロセスだったからです。
この手順も同じ結果になります。この記述の仕方でも学習やシステム開発で使用する上でありでしょうか?
3.「$func」について
この$funcは、一体なんでしょうか?
高階関数の親関数setFruits($data, $func)には、仮引数として存在し
戻り値$func($value, $key);では、「$変数名」で呼び出せる関数のように可変関数で扱われています。
参考書にはユーザー定義関数$funcと紹介されていますが、定義されている記述がないため、?となりました。
なぜユーザー定義関数と言えるのでしょうか?
ユーザー定義関数というのは、
function 関数名(仮引数){ 処理 }
のようにfunctionで定義された、関数名のことではないんでしょうか?
可変関数は、ユーザー定義関数の一部だからということでしょうか?
https://www.php.net/manual/ja/functions.user-defined.php
>上記サイトより、「PHP では、関数は参照される前に定義されている必要はありません。」
だから$funcもユーザー定義関数と言えるのでしょうか?
ご教授いただければと思います。
*今回バナナはフルーツととらえています、ご了承ください。
回答1件
あなたの回答
tips
プレビュー