関数は次の構文で定義できます:
例 #1 関数の目的を示す疑似コード
<span><span><?php<br></span><span>function </span><span>foo</span><span>(</span><span>$arg_1</span><span>, </span><span>$arg_2</span><span>, </span><span>/* ..., */ </span><span>$arg_n</span><span>)<br>{<br> echo </span><span>"Example function.n"</span><span>;<br> return </span><span>$retval</span><span>;<br>}<br></span><span>?></span></span>
他の関数やクラス定義を含め、有効な PHP コードを関数内に含めることができます。
関数名には、PHP の他の識別子と同じ命名規則があります。有効な関数名は文字またはアンダースコアで始まり、その後に文字、数字、またはアンダースコアが続きます。これは正規表現 [a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]* で表すことができます。
ヒント
次の 2 つの例で関数が条件付きで定義されている場合を除き、関数を呼び出す前に定義する必要はありません。 関数が条件付きで定義されている場合、関数
を呼び出す前にを定義する必要があります。
例 #2 条件付き関数<p></p>
<p><?php<br>$makefoo <code><span><span><?php<br>$makefoo </span><span>= </span><span>true</span><span>;<br></span><span>/* 不能在此处调用foo()函数,<br> 因为它还不存在,但可以调用bar()函数。*/<br></span><span>bar</span><span>();<br>if (</span><span>$makefoo</span><span>) {<br> function </span><span>foo</span><span>()<br> {<br> echo </span><span>"I don't exist until program execution reaches me.n"</span><span>;<br> }<br>}<br></span><span>/* 现在可以安全调用函数 foo()了,<br> 因为 $makefoo 值为真 */<br></span><span>if (</span><span>$makefoo</span><span>) </span><span>foo</span><span>();<br>function </span><span>bar</span><span>()<br>{<br> echo </span><span>"I exist immediately upon program start.n"</span><span>;<br>}<br></span><span>?></p>
Example #3 函数中的函数
<span><span><?php<br></span><span>function </span><span>foo</span><span>()<br>{<br> function </span><span>bar</span><span>()<br> {<br> echo </span><span>"I don't exist until foo() is called.n"</span><span>;<br> }<br>}<br></span><span>/* 现在还不能调用bar()函数,因为它还不存在 */<br></span><span>foo</span><span>();<br></span><span>/* 现在可以调用bar()函数了,因为foo()函数<br> 的执行使得bar()函数变为已定义的函数 */<br></span><span>bar</span><span>();<br></span><span>?></span></span>
$makefoo) {bar();
if (
foo
()
{
echo
<span><span><?php<br></span><span>function </span><span>recursion</span><span>(</span><span>$a</span><span>)<br>{<br> if (</span><span>$a </span><span>< </span><span>20</span><span>) {<br> echo </span><span>"</span><span>$a</span><span>n"</span><span>;<br> </span><span>recursion</span><span>(</span><span>$a </span><span>+ </span><span>1</span><span>);<br> }<br>}<br></span><span>?></span></span>
"I donプログラムの実行が私に到達するまで存在しません。n"
/* $makefoo が true と評価されるため、関数 foo() を安全に呼び出すことができるようになりました * /if (
$makefoo
();
function
bar
🎜()🎜🎜<?php< br >🎜🎜function 🎜🎜foo🎜🎜()<br>{<br> function 🎜🎜bar🎜🎜()<br> {<br> echo 🎜🎜「foo() が呼び出されるまで、私は存在しません。 n "🎜🎜;<br> }<br>}<br>🎜🎜/* bar() 関数はまだ存在しないため呼び出すことができません */<br>🎜🎜foo🎜🎜();<br >🎜 🎜/* foo() 関数の実行により<br> bar() 関数が定義された関数になるため、bar() 関数を呼び出すことができます */<br>🎜🎜bar🎜🎜();< br>🎜 🎜?>🎜🎜
🎜🎜🎜🎜PHP のすべての関数とクラスにはグローバル スコープがあり、関数内で定義して関数外で呼び出すことができ、またその逆も可能です。 🎜🎜PHP は関数のオーバーロードをサポートしておらず、宣言された関数の定義を解除したり再定義したりすることはできません。 🎜🎜🎜注: 🎜関数名では大文字と小文字が区別されませんが、関数を呼び出すときは、関数が定義されたときと同じ形式を使用するのが良い習慣です。
🎜🎜🎜🎜PHP では再帰関数を呼び出すことができます。 🎜🎜🎜例 #4 再帰関数 🎜🎜🎜🎜🎜<?php<br>🎜🎜function 🎜🎜recursion🎜🎜(🎜🎜$a🎜🎜)<br>{<br> if (🎜 🎜) $a 🎜🎜<🎜🎜20🎜🎜) {<br> 🎜🎜$a 🎜🎜+ 🎜🎜1 🎜🎜);<br> }<br>}<br>🎜🎜?>🎜🎜 code>🎜🎜🎜🎜🎜注: 🎜ただし、スタックがクラッシュして現在のスクリプトが終了する可能性があるため、100 ~ 200 レベルを超える再帰的な関数/メソッド呼び出しは避けてください。 無限再帰はプログラミング エラーとみなされる可能性があります。
🎜🎜🎜🎜🎜著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。 🎜🎜
🎜
上記は、関連コンテンツを含む PHP カスタム関数の公式ドキュメントを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。 🎜
🎜
🎜