가변범위란 무엇인가요?
변수 사용 시 변수 정의 규칙을 준수해야 합니다. 변수는 유효한 범위 내에서 사용해야 하며, 변수가 제한된 범위를 초과하면 변수는 의미가 없습니다. 그러면 100위안은 사용할 수 없습니다. 100달러가 이 변수에 해당하고, 100달러 이내의 범위가 범위와 동일합니다.
다양한 범위로 인해 PHP 변수는 다음 표와 같이 로컬 변수, 전역 변수, 정적 변수로 구분됩니다.
|
설명 | ||||||||
로컬 변수 | 내부에 정의되어 있습니다. 함수 변수의 범위는 해당 변수가 위치한 함수 범위입니다. | ||||||||
전역 변수 | 정의된 모든 함수 외부의 변수는 전체 PHP 파일의 범위를 가지지만 사용자 정의 함수 내에서는 사용할 수 없습니다. 사용자가 사용자 정의 함수 내에서 전역 변수를 사용하도록 하려면 global 키워드를 사용하여 전역 변수를 선언하세요 |
||||||||
정적 변수 | 함수 호출이 끝난 후에도 변수 값을 유지할 수 있습니다. 해당 범위로 다시 돌아가면 원래 값을 계속 사용할 수 있습니다. 일반 변수의 경우, 함수 호출 후 그 안에 저장된 데이터 값이 지워지고 점유된 메모리 공간이 해제됩니다. 정적 변수를 사용할 때는 먼저 static 키워드를 사용하여 변수를 선언하고, 정의할 변수 앞에 static 키워드를 넣어야 합니다 |
예제함수 내부에 할당된 변수(로컬 변수)와 함수 외부에 할당된 변수(전역 변수)를 비교하는 예제입니다.
<?php header("content-type:text/html;charset=utf-8"); $exam= "在函数外定义"; //声明全局变量 function add(){ $exam="在函数内定义"; //声明局部变量 echo "在函数内输出的内容是:".$exam."<br/>"; //输出局部变量 } add(); //调用函数 echo "在函数外输出的内容是:".$exam; //输出全局变量 ?>
실행 결과는 다음과 같습니다.
정적 변수는 여러 곳에서 사용될 수 있습니다. 예를 들어, 블로그에서 정적 변수를 사용하여 방문자 수를 기록하면 사용자가 방문하고 떠날 때마다 현재 방문자 수가 유지될 수 있습니다. 정적 변수는 채팅방에서 사용자 채팅 콘텐츠를 기록하는 데 사용될 수도 있습니다.
예제
다음 예에서는 정적 변수와 일반 변수를 사용하여 동시에 데이터를 출력하여 둘의 기능 차이를 살펴보겠습니다. 코드는 다음과 같습니다. <?php
function zdy0(){
static $message = 0; //初始化静态变量
$message+=1;
echo $message." ";
}
function zdy1(){
$message = 0; //初始化静态变量
$message+=1;
echo $message." ";
}
for ($i=0;$i<10;$i++) zdy0(); //输出1~10
echo "<br>";
for ($i=0;$i<10;$i++) zdy1(); //输出10个1
echo "<br>";
?>
코드 실행 결과:
예시:
커스텀 함수 zdy()는 1부터 10까지 출력합니다. 총 10개의 숫자가 있고 zdy1() 함수는 10 1을 출력합니다. 왜냐하면 사용자 정의 함수 zdy()에는 정적 변수 $message가 포함되어 있고 함수 zdy1()의 $message는 다음과 같기 때문입니다. 평범한 변수. 두 변수는 모두 0으로 초기화되고 두 함수는 각각 for 루프를 사용하여 호출됩니다. 결과적으로 함수 zdy()는 호출된 후 정적 변수 $message의 값을 유지합니다. 정적 변수의 초기화는 함수가 처음 호출될 때만 수행되며, 앞으로는 더 이상 초기화되지 않습니다. 함수 zdy1()이 호출된 후 해당 변수 $message는 원래 값을 잃고 0으로 다시 초기화됩니다.전역 변수는 프로그램의 어느 곳에서나 액세스할 수 있지만 사용자 정의 함수 내부에서는 액세스할 수 없습니다. 사용된. 사용자 정의 함수 내에서 전역 변수를 사용하게 하려면 global 키워드를 사용하여 전역 변수를 선언합니다.예
다음은 전역 변수를 다음과 같이 적용합니다. 전역 변수가 있는 사용자 정의 함수는 비교에 사용하면 안 됩니다. 이 예에서는 두 개의 전역 변수 $zy 및 $zyy가 정의되어 있습니다. 사용자 정의 함수 lxt()에서 이를 5행과 7행에서 호출하려고 하지만 프로그램 출력 결과는 $zyy
"PHP 중국어 웹사이트"입니다. 왜냐하면 전역 변수 $zyy가 6행에서 전역 키워드로 선언되었기 때문입니다. 5번째 줄에는 출력이 없으며 $zy는 두 번째 줄의 $zy와 아무 관련이 없습니다. 예시 코드는 다음과 같습니다.<?php header("content-type:text/html;charset=utf-8"); $zy="你好"; $zyy="PHP中文网"; function lxt(){ echo $zy."<br>"; //$zy 不能被调用,没有输出 global $zyy; //利用关键字global 在函数内部说明,不说明认为是私有变量 echo $zyy."<br>"; //调用$zyy } lxt(); ?>코드 실행 결과:
전역 변수를 적용하는 것과 적용하지 않는 것의 차이점은 다음 섹션에서 "
변수 변수"에 대해 설명하겠습니다. "php.cn Dugu Jiujian (4) - PHP 비디오 튜토리얼》변수의 범위위 내용은 PHP 변수 범위 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!