PHP の関数は非常に単純に見えますが、実際には非常に強力です。関数名が固定されているかどうかに応じて、次の 3 つのカテゴリに分類できます。
1. 固定名を持つ関数:
このタイプの関数。通常の関数は、キーワード function を使用して直接作成されます。これは最も一般的なタイプでもあります。例:
<?php //1按名调用:最直接和普通的方式 echo '1.用function关键字创建常规函数,按函数名称调用:<br>'; function add($a, $b){ return $a.'+'.$b.'='.($a+$b); }; echo add(5,6); echo '<hr>';
実行の戻り値:
1. function キーワードを使用して通常の関数を作成し、関数によって呼び出します。 name:
5+6=11
2. 動的に設定された名前を持つ関数:
このタイプの関数には、匿名関数、変数関数、変数関数、クロージャー関数など、多くの名前があります。実際、それらはそれでも、名前に怯える必要はありません。
この動的に設定された関数は、この関数を参照する変数名を使用して呼び出されるため、コールバック関数で使用するのに非常に適しています~~
ここでは教育目的で、それを匿名関数と呼びます。
匿名関数を作成する方法は主に 2 つあり、教科書によっては別々に説明されているため、ここでは分けて説明します。
1. 作成方法 1: PHP の組み込み関数 create_function (パラメーター リスト、関数本体) を使用して完成します。これらの 2 つのパラメーターは引用符で囲む必要があります。 PHP では、次のように規定されています。納得できない場合は、プログラミング言語を作成してください~~
<?php //2.用系统函数create_function()来创建一个匿名函数/可变函数/变量函数/闭包函数 echo '2.用内置create_function()函数创建匿名函数,用变量名调用:<br>'; $func1 = create_function('$a,$b','return $a.\'+\'.$b.\'=\'.($a+$b);'); echo $func1(5,6); echo '<hr>';
実行 return:
2. 組み込みの create_function() 関数を使用して、変数名:
を使用して呼び出します。 5+6=11
2. 作成方法 2: function キーワードを使用して作成します。作成プロセスは通常の関数と同じです。違いは、値の位置、つまり右側に表示されることです。 「=」等号の側。作成した関数全体を変数に割り当てます。
<?php //3匿名函数:也叫闭包函数,将函数做为值赋给一个变量 echo '3.用function关键字创建匿名函数,用变量名调用:<br>'; $func2 = function ($a, $b){ return $a.'+'.$b.'='.($a+$b); }; echo $func2(5,6); echo '<hr>';
実行すると、次の結果が返されます:
3. function キーワードを使用して、変数名で呼び出します:
5+6=11
3。名前を付けて作成が完了します。呼び出して実行するパラメーターを直接渡します。
このタイプの関数は、匿名関数に似ていますが、より粗雑です。したがって、このタイプの関数は、括弧で囲まれて呼び出します。関数には名前はまったく必要ありません。ワンタイム関数に属します。使い捨て品と同様に、使用後は捨ててください。
<?php//4自执行函数:创建完立即执行不必明示调用echo '4.用function关键字创建匿名函数,然后直接传参调用执行:<br>';//自运行的匿名函数echo (function ($a,$b){return $a.'+'.$b.'='.($a+$b);})(5,6);
実行 return:
4. function キーワードを使用して匿名関数を作成し、パラメータを直接渡して実行を呼び出します:
5+6=11
概要 (非常に重要、必読):
php、関数の使用は依然として非常に柔軟ですが、何があっても、最終的には関数は依然としてプロセスです。同時に、ユーザーがその存在とその価値を認識できるように、戻り値が存在する必要があります。
つまり、関数は常に値として使用されるため、等号「=」の左側に記述することはできません。これが関数と言語構造の最大の違いです。
たとえば、私たちはよくこう言います: echo() と list() は、等号の左側に配置でき、代入を受け入れることができるため、関数のように見えますが、関数ではなく言語構造です。しかし、機能は動作しません。この記事を読んで関数についての理解を深めていただければ幸いです~~
記事の出典: http://peter.php.cn/blog/detail/188.html