Если оператор внутри цикла не работает

1
for ($i=1; $i<=27 ; $i++) { 
        echo 'listid='.$i.'';
        echo 'statusid='.$_POST[$i].'';

            if (isset($_POST[$i])) {
            $listid = $i;
            $statusid = $_POST[$i];
            // $funcs->insertAudit($listid,$statusid);
        }
    }

Можете ли вы поместить переменную внутри $_POST? Потому что кажется, что это моя проблема. Он отображает эту ошибку:

listid = 1
Примечание. Неопределенное смещение: 1 в C:\xampp\htdocs\stafflease\index.php в строке 563
StatusID =

  • 2
    Вы должны проверить, установлен ли он, прежде чем делать это for цикла.
  • 0
    Поставьте echo после проверки, установлен ли $_POST[$i] .
Показать ещё 3 комментария
Теги:
for-loop
post

2 ответа

2

Вы не итерации безопасно на ваш $_POST.
ошибка говорит "неопределенное смещение 1" означает, что $_POST[1] не существует

вы должны безопасно перебирать использование foreach, что гарантирует, что у вас есть ключ (смещение)

foreach($_POST as $key=>$value){
    $listid = $key;
    $statusid = $value;
}

если вы все еще хотите использовать диапазон от 1 до 27, вы должны спросить isset перед тем, как отправиться в эту ячейку.

for($i = 1; $i < 27; $i){
    if(!isset($_POST[$i])) continue;
    //here it is safe to use $_POST[$i]
}
  • 0
    <label>Dynamic URL's</label> <select> <option name="20" value="1">Ok</option> <option name="20" value="2">Information</option> <option name="20" value="3">Warning</option> <option name="20" value="4">Danger</option> </select> <label>Too long URL's</label> <select> <option name="21" value="1">Ok</option> <option name="21" value="2">Information</option> <option name="21" value="3">Warning</option> <option name="21" value="4">Danger</option> </select> , вот почему мне нужно использовать диапазон 1-27
  • 0
    хорошо, так что возьмите 2-й пример и используйте isset
Показать ещё 1 комментарий
0

его нецелесообразно получать значения из массива $ _POST с помощью целочисленных индексов в боковом цикле. Вы можете использовать цикл foreach.

foreach($_POST as $key=>$value){
    $listid = $key;
    $statusid = $value;
}

$ key здесь будет атрибутом имени ваших полей формы html. Также лучше видеть, что находится внутри массива $ _POST, для этой цели вы можете сделать для целей тестирования.

echo '<pre>';
var_dump($_POST);
die;
  • 0
    я не могу использовать foreach, потому что у меня все еще есть пара типов ввода внутри формы, кроме выпадающих
  • 0
    ок, нет проблем, тогда попробуйте var_dump () и получите значения из массива $ _POST через точные индексы ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню