$result = db2_getsub( array('campaigns_id' => $this_id) ); if (!is_null($result)) { $numsub = 0; while ( $row = $result->fetch_object() ) { $numsub = $numsub +1; array_push($arrFornavn, $row->sub_name); array_push($arrEtternavn, $row->sub_code); } $formcountfld=$numsub; } else { $numsub=1; $formcountfld=1; } $i = 1; if (1==1) { for ($i = 1; $i <= $numsub; $i++) { ?> <div class="fieldrow_horz"> <div class="fieldgroup"> <input type="text" id="fornavn_<?= $i ?>" name="fornavn_<?= $i ?>" value="<?= $arrFornavn[$i-1] ?>" /> </div> <div class="fieldgroup"> <input type="text" id="etternavn_<?= $i ?>" name="etternavn_<?= $i ?>" value="<?= $arrEtternavn[$i-1] ?>" /> </div> </div> <?php } } else { ?>
Я получаю сообщение об ошибке как Notice: Undefined offset: 0
может кто-нибудь помочь .thanks заранее ожидает ответа.
Это означает, что вы пытаетесь получить доступ к значению, которое не существует, которое в вашем случае равно $ arrEtternavn [0].
Небольшой пример:
$array = array(); $array[1] = 'one'; $array[2] = 'two'; $array[4] = 'four'; echo $array[0]; // This will give a notice, $array[0] does not exist. echo $array[1]; // 'one' echo $array[2]; // 'two' echo $array[3]; // This will give a notice, $array[3] does not exist. echo $array[4]; // 'four'
Очень простое исправление:
value="<?= isset($arrEtternavn[$i-1]) ? $arrEtternavn[$i-1] : '' ?>"
Это короткое elseif-> (условие)? if_True: if_False
Изменить: я хотел бы добавить, что уведомление не очень плохо. Никаких уведомлений не было бы лучше, но это не должно заставлять вас спать по ночам.
Мое предположение было бы так … В случае, когда $result
пуст, вы устанавливаете $numsub = 1
в своем предложении else
. Однако в этом случае вы не добавили ничего в массив. Однако ваш более поздний цикл определяет продолжающееся условие как $numsub <= 1
, поэтому он выполнит и попытается распечатать массив index 0, который из- $result
что $result
был NULL
, не содержит, потому что массив пуст.
Изменение цикла for
for ($i = 0; $i < $numsub; $i++) // Notice now strictly less than { <div class="fieldrow_horz"> <div class="fieldgroup"> <input type="text" id="fornavn_<?= $i+1 ?>" name="fornavn_<?= $i+1 ?>" ^^^^ ^^^^ value="<?= $arrFornavn[$i] ?>" /> ^^^ </div> <div class="fieldgroup"> <input type="text" id="etternavn_<?= $i+1 ?>" name="etternavn_<?= $i+1 ?>" ^^^^ ^^^^ value="<?= $arrEtternavn[$i] ?>" /> ^^^ </div> </div>
Как предполагает Мартийн, вы всегда можете использовать isset()
чтобы узнать, существует ли индекс массива. Из логики, которую вы реализовали, я думаю, вы пытаетесь заверить, что индекс массива в этом цикле фактически гарантированно установлен, поэтому я предполагаю, что описанная выше небольшая логическая ошибка вызывает проблему.
Надеюсь, поможет…