함수는 다음 구문으로 정의할 수 있습니다.
예제 #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]*.
Tip
이 다음 두 예에서 조건부로 함수가 정의된 경우를 제외하고는 함수를 호출하기 전에 정의할 필요가 없습니다.
함수를 조건부로 정의하는 경우 함수를 호출하기 전에 정의해야 합니다.
예시#2 조건부 함수
<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>?></span></span>
예시#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>
PHP의 모든 함수와 클래스는 전역 범위를 가지며 함수 내에서 정의할 수 있고 그 반대의 경우도 마찬가지입니다.
PHP는 함수 오버로딩을 지원하지 않으며 선언된 함수를 정의 해제하거나 재정의하는 것이 불가능합니다.
참고: 함수 이름은 대소문자를 구분하지만, 함수를 호출할 때는 정의할 때와 동일한 형식을 사용하는 것이 좋습니다.
PHP에서는 재귀 함수를 호출할 수 있습니다.
예제 #4 재귀 함수
<code><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>
$a재귀(
)
{
if (