PHP 매뉴얼을 읽다가 다음 코드를 발견했습니다.
코드 복사 코드는 다음과 같습니다.
< ;?php
function Test()
{
static $count = 0
$count
echo $count
if ($count < 10); >Test();
$count--;
?>
실행 결과는 다음과 같습니다.
함수, 선언된 정적변수 개수를 기록하여 1~10을 출력한다.
코드는 다음과 같습니다. php
echo 'startstatic $a = 10; echo "$a
"
unset 'a'] );
echo "$a
"
static $a = 20>echo "$a
"; ['a' ] = 10;
echo "$a
";
static $a = 30; 에코 "$a
"; unset($GLOBALS ['a']);
echo "$a
"
static $a
echo "$a
"; >static $a = 40;
echo "$a
"
$a = 100;
echo "$a
"; a = 50;
echo "$a
";
static $a = 4
echo "$a
"; ;br /> ;';
exit
?>
실행 결과는 다음과 같습니다.
주의사항: 정의되지 않은 변수: a 4
11번째 줄에서 $a의 값을 10으로 변경하고, 14번째 줄에서 $a를 다시 선언한 후, 17번째 줄에서 10으로 출력합니다. 선언이 반복되면 PHP는 다시 할당하지 않고 정적 변수 메모리의 값을 계속 사용하는 것으로 추측됩니다.
이쯤 되면 매뉴얼에서 발견한 문제는 대략적으로 해결되었습니다. 즉, 재귀호출의 문장이 $count의 값을 바꾸지 않아서 재귀가 성공적으로 중지되었습니다. $count=10일 때. 잘못된 이해가 있을 수 있으니 댓글 부탁드립니다.
위 내용은 스타얼라이언스의 내용을 포함하여 스타얼라이언스 PHP의 정적 키워드 원리에 대한 연구, 연구 및 분석을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.