2010-05-24 4 views
0

Я использую 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. 

Я отлаживал его, запустив функцию is_array для людей, fname, lname и телефона, и возвращает true в качестве массива. Я также могу вручную отредактировать $ phone [2] и т. Д. И получить правильное значение. Я также запустил is_int в переменной $ counter, и он вернул true, поэтому я не уверен, почему это не работает так, как предполагалось?

Любая помощь будет замечательной!

+1

Ваш if (телефон [... должен быть, если ($ phone [... я предполагаю? –

+0

Crap, спасибо за отзыв. В моем коде это «телефон» ... Извините, и спасибо! – kimmothy16

ответ

8

Я уверен, что phone[$counter] должно быть $phone[$counter]. В противном случае он будет обрабатывать «телефон» как строку.

0

var_dump ваше значение $ _POST и посмотреть, что происходит. Массивы указывают, вероятно, не настроены на то, что вы ожидаете.

Смежные вопросы