Я просто узнаю о php, и я не могу понять, почему я получаю разные результаты от двух следующих фрагментов кода.php variables - неожиданные результаты
Сниппет 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.
Это может показаться очень простой, но я могу честно не понять, почему это не работает.
Любая помощь приветствуется.
Если бы я понять свою логику, не следует ли вам использовать 'for ($ counter = 0; $ counter <2; $ counter ++)', так как вы устанавливаете x равным 0, вы получите 12 и 24 возвращенных – Karl
You перезаписывают '$ x' для другое значение в вашем цикле 'for'. Попытайтесь ИЗБЕГАТЬ, используя глобальные переменные, хотя: их трудно отлаживать, препятствовать тестированию и, как правило, неодобрительно. – Wrikken