> 백엔드 개발 > PHP 튜토리얼 > PHP 변수 범위에 대한 자세한 설명

PHP 변수 범위에 대한 자세한 설명

墨辰丷
풀어 주다: 2023-03-25 18:56:01
원래의
2202명이 탐색했습니다.

변수의 범위는 변수가 정의된 컨텍스트(즉, 유효 범위)입니다. JavaScript에는 변수 범위라는 개념이 없습니다. 유사한 개념이 범위일 수 있습니다. 그러나 JavaScript는 변수가 선언될 때의 위치를 ​​참조하는 어휘 범위를 사용하고 PHP에는 변수 선언이 없으므로 변수는 처음으로 값이 할당될 때 변수를 선언하는 것과 동일합니다. 그러므로 둘은 동일하지 않습니다. 이번 글에서는 PHP의 변수 범위에 대해 자세히 소개하겠습니다.

1. 지역 변수
지역 변수는 함수 내에서 선언된 변수이며, 그 범위는 함수 내부로 제한됩니다. 함수의 매개변수도 지역 변수입니다. 차이점은 함수 매개변수 값이 호출될 때 전달된 값에서 나온다는 것입니다. 실행 후에는 함수 내부의 모든 동적 변수가 해제됩니다.

<?php
    function a($b){
        $c = 1;        echo "$b+$c = " . ($b+$c) . &#39;<br />&#39;;
    }
    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[&#39;d&#39;] = $GLOBALS[&#39;c&#39;] + $GLOBALS[&#39;d&#39;];
    }
    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 변수 범위,php 전역 변수 및 정적 변수

PHP 변수 범위_PHP 튜토리얼 소개

위 내용은 PHP 변수 범위에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿