***이 장의 키워드: 함수의 선언 및 사용 함수의 정적 변수 함수; ;PHP 폐쇄
이제 PHP 함수의 기본을 살펴보겠습니다↓↓↓
1 , 함수 이름은 식별자 중 하나입니다. 숫자, 문자, 밑줄만 사용할 수 있으며 숫자로 시작할 수 없습니다.
함수 이름의 이름 지정은 "작은 낙타 대소문자 규칙"을 준수해야 합니다: myNameIsXiaoxi my_name_is_xiaoxi
함수 이름은 대소문자를 구분하지 않습니다. func() Func() FUNC()를 사용할 수 있습니다
함수 이름은 기존 함수 이름이나 시스템 함수 이름과 같을 수 없습니다.
2. function_exists("func1"); 함수가 선언되었는지 여부를 감지하는 데 사용됩니다.
참고: 전달된 함수 이름은 문자열 형식이어야 합니다. 반환 결과는 true/false입니다.
1. 지역 변수: 함수 내부에 선언된 변수를 지역 변수라고 합니다. 함수 내부에서만 사용할 수 있으며, 반환하려면 함수 외부에서 사용해야 합니다.
2. 전역 변수: 선언된 함수 외부의 변수를 전역 변수라고 합니다.
3. 함수에서는 변수가 사용되며, 기본적으로 내부 로컬 변수가 사용됩니다. 함수에서 전역 변수를 사용해야 하는 경우 전역 키워드를 사용하고 함수를 사용하기 전에 전역 변수를 함수에 참조해야 합니다.
함수 안의 변수명이 전역 변수와 반복되면 전역 문 위는 함수 로컬 변수이고, 전역 문 아래는 시스템 전역 변수입니다.
4. $GLOBALS[] 전역 배열:
$GLOBALS[] 배열은 PHP에서 내장한 전역 배열로, 함수 내부에서 선언하든 외부에서든 직접 값을 추가할 수 있습니다. , 어디에서나 직접 사용할 수 있습니다.
$GLOBALS["a"] = 10; ---> echo $GLOBALS["a"];//어디서나 직접 사용
5. 함수에 매개변수를 전달하면 함수 내부에서 전역 변수를 사용할 수 있습니다.
그러나 전달된 매개변수는 함수의 로컬 변수이므로 내부적으로 변경되면 외부적으로 변경되지 않습니다.
전달된 매개변수가 주소 함수 func($a1,&$a2)가 아닌 경우{} //a1이 함수에서 내부적으로 수정되면 전역 a1은 변경되지 않습니다. 글로벌 a2가 변경됩니다.
함수의 형식 매개변수에 주소 기호가 나타나면 함수를 호출할 때 실제 매개변수는 리터럴이 아닌 변수여야 합니다.
예를 들어 위의 예에서 func($a1,$a2); √ func($a1,2); ×
6을 사용하면 범위에 영향을 미치지 않습니다.
1.정적 변수는 static 키워드를 사용하여 선언됩니다. static $num = 10;
2. 정적 변수의 특징:
>>>정적 변수는 함수가 처음 로드될 때 선언됩니다.
>>> 정적 변수는 함수가 사용된 직후에 해제되지 않습니다. 정적 변수는 전체 스크립트 실행 과정에서 한 번만 선언됩니다.
>>>여러 번 호출되는 동일한 함수는 동일한 정적 변수를 공유합니다.
1 PHP에서 매개변수 전달의 경우: 실제 매개변수 목록은 형식 매개변수
2보다 클 수 있습니다. . 기존 매개변수 전달: function func($a){} func($a)
3. 참조로 매개변수 전달: function func(&$a){} func($a); by &, 함수 내부적으로 변수를 수정하고 함수 외부에서 동기적으로 변경합니다.
②공식 매개변수는 참조 매개변수이며 실제 매개변수는 변수일 수 있으며 리터럴은 불가능합니다. func(10) ×
4. 기본 매개변수: function func($b ,$ a = 10) {} Func (20);
// $가 전달되지 않으며 기본값은 10입니다. $ b가 전달되어야 합니다. 그렇지 않으면 사용 중에 오류가 정의되지 않습니다.
매개변수에 기본 매개변수와 기본이 아닌 매개변수가 모두 있는 경우 기본 매개변수 목록
은 기본이 아닌 매개변수 목록 뒤에 와야 합니다. 즉, 호출 시 기본이 아닌 목록을 먼저 할당해야 합니다. .
5. 변수 매개변수 목록: PHP는 형식 매개변수보다 실제 매개변수가 더 많을 수 있으므로 N개의 실제 매개변수를 전달하고 PHP 내장 함수를 통해 해당 매개변수를 가져올 수 있습니다.
var_dump(func_get_args()); //모든 매개변수 목록 가져오기(배열)
var_dump(func_num_args()) //반환된 매개변수의 총 개수는 count(func_get_args())와 같습니다. var_dump (func_get_arg(0));//아래 첨자에 따라 각 매개변수를 반환합니다.
五
1. 변수 함수를 사용하여 콜백 함수를 맞춤설정하세요
function func($func){$func();}--->function f() { }--->func("f");
2. 콜백 함수를 맞춤설정하려면 call_user_func_array 및 call_user_func를 사용하세요.
두 함수의 첫 번째 매개변수는 현재 콜백의 실행을 나타내는 콜백 함수입니다. .
차이점은 call_user_func_array()의 두 번째 매개변수가 배열이고 배열의 각 값이 콜백 함수의 매개변수 목록에 할당된다는 점입니다. 이는 JS의 apply()와 동일합니다.
그리고 call_user_func 콜백을 할당하는 것입니다. 함수의 매개변수 목록이 직접 확장되어 두 번째 매개변수에 여러 매개변수로 기록됩니다. 이는 JS의 call()과 같습니다.
eg:call_user_func_array("func",array(1,2, 3));
--> func(1,2,3);
call_user_func("func",1,2,3) --> func(1,2,3);
변수함수로 인해 호출시 (func()/$func();)
호출자가 여러 명 있습니다. 함수 호출이 더 통일되어 익명 함수가 생성되었습니다! ! !
익명함수 선언시 함수 본문 뒤 세미콜론은 필수!
익명 함수 자체도 변수이며 var_dump()를 사용하여 객체 유형으로 감지됩니다.
데모 코드:
<span style="font-family: 楷体; font-size: 14pt"><span style="color: #008080"> 1</span> <span style="color: #0000ff">function</span><span style="color: #000000"> func(){}</span><span style="color: #008080"> 2</span> <span style="color: #800080">$fun</span> = "func"<span style="color: #000000">;</span><span style="color: #008080"> 3</span> <span style="color: #800080">$fun</span><span style="color: #000000">();</span><span style="color: #008080"> 4</span> <span style="color: #000000"> func();</span><span style="color: #008080"> 5</span> <span style="color: #008080"> 6</span> <span style="color: #800080">$func</span> = <span style="color: #0000ff">function</span><span style="color: #000000">(){</span><span style="color: #008080"> 7</span> <span style="color: #0000ff">echo</span> "I am ZXX<br />"<span style="color: #000000">;</span><span style="color: #008080"> 8</span> <span style="color: #000000">};</span><span style="color: #008080"> 9</span> <span style="color: #800080">$func</span>(10<span style="color: #000000">);</span><span style="color: #008080">10</span> <span style="color: #008080">var_dump</span>(<span style="color: #800080">$func</span>);<br></span>
1、两者的作用,都是用于引入外部的PHP文件到当前文件中。
2、两者的区别:当引用文件错误时,include会产生警告,并不影响后续代码执行。
而require会产生致命错误,后续代码全部不再执行。
3、一般,当用于在文件最上方导入某些文件时,使用require导入,如果导入失败,则不再执行文件;
而如果是在某些分支条件中,导入执行某些操作,则一般使用include。一旦报错,不影响其他分支功能。
4、include_once和require_once表示:文件只能导入一次,如果多次调用此函数,则后面的语句会判断文件是否导入。
再决定是否导入新文件。
(检测文件是否导入时,只关心文件是否已经导入,并不关心是否以何种方式导入的)
include("test.txt");
require_once "test.txt";//由于include进来了,require不再导入。
5、include和require可以导入各种类型的文件。
相当于在当前文件copy了一份,但是copy过程中,PHP引擎会进行适当的编译,确保不会出错。
6、include和require是函数,也是指令!PHP对于很多常用函数会提供指令的写法。
eg:echo("11");//函数写法 echo"11";//指令写法
演示代码:
1 $num = true;2 if($num){3 include'functionDate.php';4 //require "functionDate.php";5 func1();6 func2();7 func3();8 }9 echo "haha";
在PHP中,子函数无法直接访问父函数的局部变量,必须使用User关键词向下传递!!!
1 $a = 12; 2 function func1(){ 3 $num = 10; 4 $num1 = 11; 5 $func2 = function() use($num,$num1){//使用use关键词传递父函数局部变量 6 global $a; 7 var_dump($a); 8 var_dump($num); 9 var_dump($num1);10 };11 return $func2;12 }13 $f = func1();14 $f($num);
위 내용은 PHP에서 마스터해야 할 입문 지식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!