정적 변수와 일반 변수의 차이점은 무엇인가요? PHP를 처음 접하는 많은 친구들에게는 이해가 쉽지 않을 수 있습니다. 오늘은 PHP에서 정적 변수와 일반 변수의 차이점을 살펴보겠습니다.
php에서 정적 정적 변수와 일반 변수의 차이점
변수 앞에 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--; } ?>
참고: 정적 변수는 표현식으로 선언할 수 없습니다. $int = 1+2; 는 틀렸지만 static $int = 1;
읽어주셔서 감사합니다. 모든 사람에게 도움이 되기를 바랍니다. 이 사이트를 지원해 주셔서 감사합니다!
위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장 사항:
php에서 str_pad() 함수 사용에 대한 자세한 설명 bind_param() 함수 자세한 사용법설명
위 내용은 PHP의 정적 정적 변수와 일반 변수의 차이점에 대한 자세한 그래픽 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!