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

rkkpypqq  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(485)

我的sql查询结果保存在变量中 $res .
print_r()$res 这么说,没关系(我想):

  1. Array ( [0] => Array ( [hoejdemeter] => 1152 [laengde] => 24120 ) )

这个 $res 返回到函数并循环以获取两个变量:

  1. foreach ($Data as $value) {
  2. list ($length, $hight) = $Data;
  3. }

然后我遇到了一个问题:
注意:第95行的c:\xampp\htdocs\phpproject1\bjergcykel1.php中未定义的偏移量:0
怎么了?

xtfmy6hx

xtfmy6hx1#

你的问题是使用 list 使用关联数组。这个 list 文件明确指出:
list()只适用于数值数组,并假定数值索引从0开始。
你的数组有两个字符串键 hoejdemeter 以及 laengde 而不是数字指数 0 以及 1 .
检索数据最干净的方法是:

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

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

pkbketx9

pkbketx92#

你的问题不完整-我们看不到实际的代码示例,所以很难判断函数内部发生了什么。我强烈建议你阅读这篇关于如何用聪明的方式提问的优秀文章
我建议你构造一个极简主义的例子来显示这样的错误:

  1. <?php
  2. function test($data){
  3. print_r($data);
  4. foreach ($data as $value) {
  5. list($length, $hight) = $value;
  6. echo("DEBUG: $length, $hight\n");
  7. }
  8. }
  9. $data=array(array ("hoejdemeter" => 1152, "laengde" => 24120 ) );
  10. test($data);
  11. ?>

输出为:

  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [hoejdemeter] => 1152
  6. [laengde] => 24120
  7. )
  8. )
  9. PHP Notice: Undefined offset: 0 in /tmp/foo.php on line 7
  10. PHP Notice: Undefined offset: 1 in /tmp/foo.php on line 7
  11. DEBUG: ,

我猜你想做的是:

  1. <?php
  2. function test($data){
  3. print_r($data);
  4. foreach ($data as $value) {
  5. print_r($value);
  6. list($length, $hight) = array_values($value);
  7. echo("DEBUG: $length, $hight\n");
  8. }
  9. }
  10. $data=array(array ("hoejdemeter" => 1152, "laengde" => 24120 ) );
  11. test($data);
  12. ?>

输出:

  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [hoejdemeter] => 1152
  6. [laengde] => 24120
  7. )
  8. )
  9. Array
  10. (
  11. [hoejdemeter] => 1152
  12. [laengde] => 24120
  13. )
  14. DEBUG: 1152, 24120
展开查看全部
pcww981p

pcww981p3#

你可以干脆不用 list :

  1. foreach ($Data as $value) {
  2. $hight = $value['hoejdemeter'];
  3. $length = $value['laengde'];
  4. }

相关问题