>백엔드 개발 >PHP 문제 >PHP에서 정적 변수와 일반 변수의 차이점은 무엇입니까?

PHP에서 정적 변수와 일반 변수의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-01-27 17:10:374397검색

차이점: 1. 정적 변수는 한 번만 초기화되지만 일반 변수는 여러 번 초기화될 수 있습니다. 2. 일반 전역 변수의 범위는 소스 프로그램 전체입니다. 소스 프로그램이 여러 소스 파일로 구성된 경우 일반 전역 변수는 각 소스 파일에서 유효하지만 정적 전역 변수는 변수가 있는 소스 파일에서만 유효합니다. 이내에서 유효합니다.

PHP에서 정적 변수와 일반 변수의 차이점은 무엇입니까?

본 튜토리얼의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터

변수 앞에 static을 추가하여 정적 변수(정적 변수)를 만듭니다.

정적 변수와 일반 변수의 차이점은 비정적 전역 변수의 범위가 전체 소스 프로그램이라는 것입니다. 소스 프로그램이 여러 소스 파일로 구성된 경우 비정적 전역 변수는 각 소스 파일에서 유효합니다. 정적 전역 변수는 범위를 제한합니다. 즉, 변수가 정의된 소스 파일 내에서만 유효하며 동일한 소스 프로그램의 다른 소스 파일에서는 사용할 수 없습니다. 정적 전역 변수의 범위는 하나의 소스 파일로 제한되고 해당 소스 파일의 함수에서만 공유할 수 있으므로 다른 소스 파일에서 오류를 피할 수 있습니다.

정적 변수와 일반 변수의 차이점:

정적 전역 변수와 일반 전역 변수의 차이점: 정적 전역 변수는 한 번만 초기화되어 다른 파일 단위에서 참조되지 않습니다.
정적 로컬 변수의 차이점; 변수와 일반 지역 변수: 정적 지역 변수는 한 번만 초기화되고 다음 번에는 마지막 결과 값을 기준으로 합니다.
정적 함수와 일반 함수의 차이점: 정적 함수는 메모리에 복사본이 하나만 있고 일반 함수는 각 통화마다 복사하세요.

전역 변수 앞에 static 키워드를 추가하면 전역 변수가 전역 정적 변수로 정의됩니다.

1) 메모리 내 위치: 정적 저장 영역(정적 저장 영역은 전체 프로그램 실행 중에 존재함)

2) 초기화: 초기화되지 않은 전역 정적 변수는 프로그램에 의해 자동으로 0으로 초기화됩니다(자동 객체의 값은 임의임) , 명시적으로 초기화되지 않은 경우)

3) 범위: 전역 정적 변수는 선언된 파일 외부에서 볼 수 없습니다. 정확히 정의 지점부터 파일 끝까지.

정적 변수의 이점:

다른 파일에서 액세스할 수 없습니다. 동일한 이름을 가진 변수를 사용하면 충돌 없이 다른 파일을 수정할 수 있습니다.

메모리 내 위치: 정적 저장 영역

초기화: 초기화되지 않은 전역 정적 변수는 프로그램에 의해 자동으로 0으로 초기화됩니다(자동 개체의 값은 명시적으로 초기화되지 않는 한 임의적입니다)
범위: 역할 범위는 다음과 같습니다. 여전히 로컬 범위입니다. 이를 정의하는 함수나 명령문 블록이 끝나면 범위도 종료됩니다.

참고: 지역 변수를 수정하기 위해 static을 사용하면 지역 변수의 저장 위치가 원래 스택에서 정적 저장 영역으로 변경됩니다. 그러나 지역 정적 변수는 범위를 벗어난 후에도 소멸되지 않고 프로그램이 끝날 때까지 메모리에 계속 남아 있지만 더 이상 액세스할 수 없습니다.
전역 변수를 수정하기 위해 static을 사용하면 전역 변수의 범위가 변경되지만(선언된 파일 외부에는 표시되지 않음) 저장 위치는 변경되지 않으며 여전히 정적 저장 영역에 있습니다. .

일반 함수 예:

<?php
function Test() {
  $w3sky = 0;
  echo $w3sky;
  $w3sky++;
  /*函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。*/
}
?>

$w3sky 변수를 정적으로 정의하기 위한 코드는 다음과 같습니다.

<?php
function Test() {
  static $w3sky = 0;
  echo $w3sky;
  $w3sky++;
} //本函数每调用Test()都会输出 $w3sky 的值并加一。
 
?>

정적 변수는 재귀 함수를 처리하는 방법도 제공합니다. 재귀 함수는 자신을 호출하는 메서드입니다. 재귀 함수를 작성할 때는 종료 없이 무한정 재귀할 수 있으므로 주의하십시오. 재귀를 중단할 수 있는 방법이 있는지 확인하십시오. 다음의 간단한 함수는 10까지 재귀적으로 계산하고 정적 변수 $count를 사용하여 중지 시점을 결정합니다. 정적 변수 및 재귀 함수의 예:

<?php
function Test() {
  static $count = 0;
  $count++;
  echo $count;
  if ($count < 10) {
    Test();
  }
  $count--;
}
?>

참고: 정적 변수는 표현식으로 선언할 수 없습니다. 예: static $int = 1 +2; 이 방법은 틀렸지만 static $int = 1; 이 선언 방법은 옳습니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 정적 변수와 일반 변수의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.