저는 PHP에 대해 배우기 만하고 다음 코드 스 니펫과 다른 결과를 얻는 이유를 이해할 수 없습니다.PHP 변수 - 예기치 않은 결과
니핏 1
<?php
$x = 22;
$y = 12;
$counter = 0;
function add()
{
if ($GLOBALS['counter'] == 0)
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
else
{
$GLOBALS['z'] += $GLOBALS['y'];
}
$GLOBALS['counter'] ++;
}
add();
echo "$z <br>";
add();
echo "$z <br>";
?>
제 34 복귀 예상대로 46.
코드 조각 2 :
<?php
$x = 22;
$y = 12;
$counter = 0;
function add()
{
if ($GLOBALS['counter'] == 0)
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
else
{
$GLOBALS['z'] += $GLOBALS['y'];
}
$GLOBALS['counter'] ++;
}
for ($x=0; $x < 2; $x++)
{
add();
echo "$z <br>";
}
?>
두 번째 리턴 (12), (24)
이 매우 간단 들릴 수는 있지만 솔직히이 작동하지 않는 이유를 작동하지 않을 수 있습니다.
도움을 주시면 감사하겠습니다.
내가 만약을 만들 때 당신의 논리를 이해하십시오. x를 0으로 설정하면 12와 24를 얻게 될 것이기 때문에 for ($ counter = 0; $ counter <2; $ counter ++)를 사용하면 안됩니다. – Karl
You '$ x'을 (를) 'for' 루프의 또 다른 값. 전역을 사용하여 피해야합니다. 디버깅하기 어렵고 테스트를 방해하며 일반적으로 싫어합니다. – Wrikken