Мой результат SQL-запроса сохраняется в переменной $res
.
Это print_r()
из $res
говорит, что это нормально (я думаю):
Array ( [0] => Array ( [hoejdemeter] => 1152 [laengde] => 24120 ) )
$res
возвращается в функцию и зацикливается, чтобы получить две переменные:
foreach ($Data as $value) {
list ($length, $hight) = $Data;
}
Тогда я получаю эту проблему:
Примечание: Неопределенное смещение: 0 в C:\xampp\htdocs\PhpProject1\BjergCykel1.php в строке 95
Что случилось?
Ваш вопрос неполный - мы не можем видеть фактический пример кода, поэтому вам трудно сказать, что происходит внутри вашей функции. Я настоятельно рекомендую прочитать эту замечательную статью. Как задавать вопросы Smart Way
Я рекомендую вам создать минималистский пример, который показывает ошибку следующим образом:
<?php
function test($data){
print_r($data);
foreach ($data as $value) {
list($length, $hight) = $value;
echo("DEBUG: $length, $hight\n");
}
}
$data=array(array ("hoejdemeter" => 1152, "laengde" => 24120 ) );
test($data);
?>
Результат:
Array
(
[0] => Array
(
[hoejdemeter] => 1152
[laengde] => 24120
)
)
PHP Notice: Undefined offset: 0 in /tmp/foo.php on line 7
PHP Notice: Undefined offset: 1 in /tmp/foo.php on line 7
DEBUG: ,
Я предполагаю, что вы хотели сделать это:
<?php
function test($data){
print_r($data);
foreach ($data as $value) {
print_r($value);
list($length, $hight) = array_values($value);
echo("DEBUG: $length, $hight\n");
}
}
$data=array(array ("hoejdemeter" => 1152, "laengde" => 24120 ) );
test($data);
?>
Выход:
Array
(
[0] => Array
(
[hoejdemeter] => 1152
[laengde] => 24120
)
)
Array
(
[hoejdemeter] => 1152
[laengde] => 24120
)
DEBUG: 1152, 24120
Вы можете просто не использовать list
:
foreach ($Data as $value) {
$hight = $value['hoejdemeter'];
$length = $value['laengde'];
}
Проблема заключается в использовании list
с ассоциативным массивом. В документации list
четко указано:
list() работает только на числовых массивах и предполагает, что числовые индексы начинаются с 0.
В вашем массиве есть две строковые ключи hoejdemeter
и laengde
вместо числовых индексов 0
и 1
.
Самый чистый способ получить данные:
foreach ($Data as $value) {
$height = $value['hoejdemeter'];
$length = $value['laengde'];
//... Do something with $height and $length inside the foreach
}
Используя функцию fo для получения значений вместо использования ключей и их назначения вручную, ваш код становится менее читаемым и не должен быть выполнен в вашем случае.