변수의 범위는 변수가 정의된 컨텍스트(즉, 유효 범위)입니다. JavaScript에는 변수 범위라는 개념이 없습니다. 유사한 개념이 범위일 수 있습니다. 그러나 JavaScript는 변수가 선언될 때의 위치를 참조하는 어휘 범위를 사용하고 PHP에는 변수 선언이 없으므로 변수는 처음으로 값이 할당될 때 변수를 선언하는 것과 동일합니다. 그러므로 둘은 동일하지 않습니다. 이번 글에서는 PHP의 변수 범위에 대해 자세히 소개하겠습니다.
1. 지역 변수
지역 변수는 함수 내에서 선언된 변수이며, 그 범위는 함수 내부로 제한됩니다. 함수의 매개변수도 지역 변수입니다. 차이점은 함수 매개변수 값이 호출될 때 전달된 값에서 나온다는 것입니다. 실행 후에는 함수 내부의 모든 동적 변수가 해제됩니다.
<?php function a($b){ $c = 1; echo "$b+$c = " . ($b+$c) . '<br />'; } a(2);//输出3 echo $b+$c;//函数外部的非法访问,报notice错误,并输出0 ?>
2. 전역 변수
함수 외부에 정의된 변수를 전역 변수라고 하며, 그 범위는 정의된 변수의 시작부터 프로그램 파일의 끝까지입니다.
또한 전역 변수는 함수에서 직접 호출할 수 없습니다. global 대신 $GLOBALS를 사용할 수도 있습니다. $GLOBALS는 슈퍼전역 변수입니다.
<?php //示例1 $a = 1; $b = 2; function Sum(){ global $a, $b; $b = $a + $b; } Sum(); echo $b;//输出的结果是3 //示例2 $c = 1; $d = 2; function Sum() { $GLOBALS['d'] = $GLOBALS['c'] + $GLOBALS['d']; } Sum(); echo $d;//输出3 ?>
3. 정적 변수
정적 변수는 로컬 함수 범위에만 존재하지만 프로그램 실행이 이 범위를 벗어나면 해당 값이 손실되지 않습니다. 정적 변수는 static으로 선언되며, 정적으로 선언되지 않은 변수는 기본적으로 동적 변수입니다. 함수가 실행된 후 내부 정적 변수는 이미 메모리에 저장됩니다. 스크립트 실행 중에 함수가 처음 호출될 때만 초기화됩니다.
<?php function test() { static $a = 0; echo $a; $a++; } test();//输出0 test();//输出1 ?>
정적 변수는 재귀 함수를 처리하는 방법도 제공합니다. 재귀 함수는 자기 자신을 호출하는 함수입니다. 재귀 함수를 작성할 때는 무기한 재귀될 수 있으므로 주의하세요. 재귀를 종료하는 적절한 방법이 있는지 확인해야 합니다. 다음의 간단한 함수는 $count 정적 변수를 사용하여 10까지 재귀적으로 계산하여
<?php function test() { static $count = 0; $count++; echo $count; if ($count < 10) { test(); } $count--; } ?>
정지 시점을 결정합니다. 관련 권장 사항:
위 내용은 PHP 변수 범위에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!