将结果返回给函数PHP后的未定义偏移量

时间:2018-01-15 15:39:47

标签: php mysql arrays variables offset

我的SQL查询结果保存在变量$res

来自print_r()的{​​{1}}说出来,这是好的(我认为):

$res

Array ( [0] => Array ( [hoejdemeter] => 1152 [laengde] => 24120 ) ) 返回给函数并循环以获取两个变量:

$res

然后我遇到了这个问题:

  

注意:未定义的偏移量:第95行的C:\ xampp \ htdocs \ PhpProject1 \ BjergCykel1.php中的0

有什么问题?

3 个答案:

答案 0 :(得分:0)

您只能不使用list

foreach ($Data as  $value) {
    $hight  = $value['hoejdemeter'];
    $length = $value['laengde'];
}

答案 1 :(得分:0)

您遇到的问题是将list与关联数组一起使用。 list documentation明确指出:

  

list()仅适用于数值数组,并假设数字索引从0开始。

您的数组有两个字符串键hoejdemeterlaengde,而不是数字索引01

检索数据最简洁的方法是:

foreach ($Data as $value) {
    $height = $value['hoejdemeter'];
    $length = $value['laengde'];
    //... Do something with $height and $length inside the foreach
}

使用函数来检索值而不是使用键并手动分配它们只会使代码的可读性降低,在您的情况下不应该这样做。

答案 2 :(得分:0)

您的问题不完整 - 我们无法查看实际的代码示例,因此很难说出您的函数内部会发生什么。我强烈建议您阅读这篇优秀文章How To Ask Questions The 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