未初始化的数组偏移量

时间:2010-05-24 06:59:05

标签: php forms arrays

我使用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,所以我不确定为什么这不按预期工作?

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:8)

我非常确定phone[$counter]应为$phone[$counter]。否则它会将“电话”视为字符串。

答案 1 :(得分:0)

var_dump你的$ _POST值,看看发生了什么。阵列标记可能未设置为您所期望的值。