PHP 전역 변수

PHP 의 전역 변 수 는 C++,자바 전역 변수 와 유사 하 다 고 생각 했 으 나 최근 프로젝트 를 수행 하 는 과정 에서 사 용 된 국 변 수 를 통 해 이 방면 의 내용 을 보충 학습 해 야 한 다 는 것 을 알 게 되 었 습 니 다.
전역 변수의 글로벌 정의 와 사용
처음에 나의 요 구 는 이 랬 다.
php
$name = "why";
function changeName(){
    $name = "what";
}
changeName();
echo "my name is " . $name . "
"; ?>

실행 코드 의 결 과 는:my name is why 입 니 다.changeName()을 실행 한 후에 what 를 표시 하 는 것 이 아 닙 니 다.이 유 를 분석 합 니 다.함수 체 changeName 에 있 는$name 변 수 는 부분 변수 로 설정 되 어 있 지 않 기 때 문 입 니 다.$name 의 역할 도 메 인 은 changeName 에 있 습 니 다.따라서 코드 를 수정 하고 전역 변 수 를 다음 과 같이 추가 합 니 다.
php
global $name;
$name = "why";
function changeName(){
    $name = "what";
}
changeName();
echo "my name is " . $name . "
"; ?>

메모:글로벌 성명 변 수 를 사용 하 는 동시에 변수 에 값 을 부여 할 수 없습니다.global$name="why"의 사용 방식 이 잘못 되 었 습 니 다.
전역 변 수 를 정의 한 후에 실 행 된 결 과 는 여전히 my name is why 입 니 다.이 결 과 는 놀 랍 습 니 다.원래 global 의 정확 한 용법 은"한 함수 에 외부 변 수 를 도입 합 니 다.이 변 수 는 매개 변 수 를 통 해 전달 되 지 않 으 면 global 을 통 해 도입 합 니 다."즉,하나의 함수 가 외부 변 수 를 인용 할 때 함수 내 에서 global 을 통 해 이 변 수 를 설명 할 수 있 습 니 다.그러면 이 변 수 는 함수 에서 사용 할 수 있 습 니 다(매개 변수 로 전달 되 는 것 과 같 습 니 다).그러면 코드 를 다시 수정 합 니 다.
php
$name = "why";
function changeName(){
    global $name;
    $name = "what";
}
changeName();
echo "my name is " . $name . "
"; ?>

이번 실행 결 과 는 my name is what 입 니 다.global 은 매개 변 수 를 전달 하 는 역할 을 하 는 것 이지 변수의 역할 영역 을 전체 로 하 는 것 이 아 닙 니 다.다음 의 예 를 보십시오.
php
$name = "why";
function changeName(){
    global $name;
    $name = "what";
}
function changeName2(){
    $name = "where";
}
changeName();
changeName2();
echo "my name is " . $name . "
"; ?>

실행 결 과 는:my name is what 입 니 다.changeName 2()에 global$name 을 추가 하면 실행 결 과 는:my name is where 입 니 다.
다시 말 하면 global 의 역할 은 매개 변 수 를 전달 하 는 것 과 같 습 니 다.함수 외부 에서 성명 하 는 변 수 는 함수 내 에서 사용 하려 면 global 로 이 변 수 를 설명 하 는 것 과 같 습 니 다.그러면 이 변 수 를 전달 하 는 것 과 같 습 니 다.이 변 수 를 참조 할 수 있 습 니 다.
global 매개 변수 정의 외 에 도 초 전역 변수$GLOBAL 을 사용 할 수 있 습 니 다.
 
php
$name = "why";
function changeName(){
    $GLOBALS['name'] = "what";
}
changeName();
echo "my name is " . $name . "
"; ?>

 
2 global 과$GLOBAL
하나의 예:
php
$var1 = 1;
$var2 = 2;
function test1(){
    $GLOBALS['var2'] = &$GLOBALS['var1'];
}
test1();
echo $var2 . "
"; $var3 = 1; $var4 = 2; function test2(){ global $var3,$var4; $var4 = &$var3; } test2(); echo $var4 . "
"; ?>

$var 2 의 값 을 1 로 출력 합 니 다.$var 4 의 값 은 2 입 니 다.$var 3 의 인용 은$var 4 의 인용 주 소 를 가리 키 기 때 문 입 니 다.$var 4 의 실제 값 은 변 하지 않 았 다.공식 적 인 설명 은$GLOBALS[var']는 외부 전역 변수 자체 이 고 global$var 는 외부$var 의 동명 인용 이나 지침 입 니 다.$GLOBAL 은 스 크 립 트 의 모든 역할 영역 에서 사용 할 수 있 으 며 함수 나 방법 에서 global$variable 을 실행 할 필요 가 없습니다. 그들 을 방문 할 수 있 습 니 다.모든 초 전역 변수 와 달리$GLOBALS 는 PHP 에서 항상 사용 할 수 있 습 니 다.다른 예:
php
$var1 = 1;
function test1(){
    unset($GLOBALS['var1']);
}
test1();
echo $var1 . "
"; $var2 = 1; function test2(){ global $var2; unset($var2); } test2(); echo $var2; ?>

출력 결 과 는$var 1 이 존재 하지 않 고$var 2 의 값 은 1 입 니 다.이 는$var 2 는 별명 참조 일 뿐 그 자체 의 값 이 변 하지 않 았 음 을 증명 합 니 다.즉,global$var 는 사실$var=&$GLOBALS[var']입 니 다.외부 변 수 를 호출 하 는 별명 일 뿐 입 니 다!
다음으로 전송:https://www.cnblogs.com/borage/p/3645285.html

좋은 웹페이지 즐겨찾기