У меня есть следующий фрагмент кода, который кто-то написал, и который я пытаюсь исправить:
function calc() {
require_once("db.php");
connect();
$a = split("#", $_SESSION['freight']);
$loc = $a[0];
$r = mysql_query("SELECT `price`, `gst` FROM `freight` WHERE `location`='$loc'");
$arr = mysql_fetch_array($r);
$_SESSION['freight'] = $loc."#".$arr['price'];
return $arr['price'];
}
function ajaxFunction () {
$_SESSION['freight'] = $_GET['loc'];
$freight = calc();
echo number_format($freight, 2);
return;
}
Это не красиво, я просто пытаюсь это исправить.
Теперь я заметил, что ошибка, по-видимому, связана с тем, что $ freight = calc (). После этой строки $ freight будет равняться, скажем, $ 10 (значение $ arr ['price']). НО $ _SESSION ['freight'] также будет равняться 10 $ и всего 10 $, как если бы это была та же переменная, что и $ freight. То, что я всегда устанавливаю в $ freight, также становится $ _SESSION ['freight'].
Если я изменю $ freight в функции ajax на $ freight2, это не изменит переменную сеанса. Это что-то главное, что я не знаю о PHP? Имена переменных имеют то же пространство имен, что и переменные сеанса?
Вопрос в целом:
Меняет ли $ a alter $ _SESSION ['a'] в любом случае? Потому что это действительно так.