Возможно, я найду способ обойти эту проблему, которую я имею, но мне очень хотелось бы понять, что вызывает ее конструкция.Построение массива дает 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 дают выходы ниже и правильного значение широты выводится = 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