我可能找到一種方法來解決我遇到的這個問題,但真的想了解什麼語言構造造成它。構建一個數組給PHP未定義的偏移:0
邏輯如下,我想建立一個會話變量,因爲用戶點擊Google地圖上的一個路線點陣列。該POST分組是JSON對象:
?waypoint={"waypoint":[{"lat":"23.3","long":"145"}]}
接受POST和解釋的代碼是:
<?php
session_start();
//session_destroy();
//die;
//$waypoints[] = array(); <<== uncomment this and the behaviour changes
if (isset ($_GET ['waypoint'])) {
$waypoint = $_GET ['waypoint'];
$waypoint = json_decode($waypoint,true);
print_r($waypoint['waypoint']); <<<========output 1
if (isset ($_SESSION ['waypoints'])) {
$waypoints = $_SESSION ['waypoints'];
$waypoints [] = $waypoint['waypoint'];
$_SESSION ['waypoints']=$waypoints;
} else {
$_SESSION ['waypoints'] = $waypoint['waypoint'];
$waypoints[] = $waypoint['waypoint'];
}
}
foreach($_SESSION ['waypoints'] as $var) {
var_dump($var); <<<<====== Output 2
echo($var[0]['lat']); <<<<==== Here is the problem.
};
?>
這是問題所在。第一次通過,輸出1和2下面提供的輸出和用於LAT被輸出的正確的值= 23.3
**Output 1:** Array ([0] => Array ([lat] => 23.3 [long] => 145))
-------------------------------------------------------
**Output 2:**
array (size=1)
0 =>
array (size=2)
'lat' => string '23.3' (length=4)
'long' => string '145' (length=3)
第二呼叫,產生一個錯誤Notice: Undefined offset: 0
和隨後的調用都很好,也就是該陣列按預期建立。現在,如果我取消聲明waypoints[] = array();
它在第一階段炸彈,但隨後所有的運行都沒問題。
有人能解釋這種行爲嗎?
謝謝
我們可以假設你確實在這段代碼中有一個'session_start()',你沒有向我們展示過嗎? – RiggsFolly
是的,對不起,我把它遺漏了。我現在將添加 – TrueBlue