【问题标题】:Uninitialized array offset未初始化的数组偏移
【发布时间】:2010-05-24 06:59:05
【问题描述】:

我正在使用 PHP 创建一个包含字段数组的表单。基本上,您可以在表单中添加无限数量的“人”,每个人都有名字、姓氏和电话号码。该表格要求您仅为第一个人添加电话号码。如果您将任何其他人的电话号码字段留空,则处理程序文件应该被编程为使用第一人的电话号码。

所以,我的字段是:

person[] - 一个隐藏字段,其值是此人的主键。

fname[] - 输入字段

lname[] - 输入字段

phone[] - 输入字段

我的表单处理程序如下所示:

$people = $_POST['person']
$counter = 0;

foreach($people as $person):
    if($phone[$counter] == '') {
    // use $phone[0]'s phone number
    } else {
    // use $phone[$counter] number
    }
    $counter = $counter + 1;
endforeach;

虽然 PHP 不喜欢这样,但它让我很痛苦

Notice: Uninitialized string offset error.  

我通过在 people、fname、lname 和 phone 上运行 is_array 函数对其进行了调试,它返回 true 为数组。我也可以手动回显 $phone[2] 等并获得正确的值。我还在 $counter 变量上运行了 is_int 并且它返回 true,所以我不确定为什么它没有按预期工作?

任何帮助都会很棒!

【问题讨论】:

  • 你的 if(phone[... 应该是 if($phone[... 我猜?
  • 废话,感谢您的反馈。在我的代码中是“$phone”...对不起,谢谢!

标签: php forms arrays


【解决方案1】:

我很确定 phone[$counter] 应该是 $phone[$counter]。否则它会将“phone”视为字符串。

【讨论】:

    【解决方案2】:

    var_dump 你的 $_POST 值,看看发生了什么。数组索引可能未设置为您所期望的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-11
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      相关资源
      最近更新 更多