0
$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 任何人都可以提供帮助。提前感谢期待答案。

4

2 回答 2

2

这意味着您正在尝试访问一个不存在的值,在您的情况下是 $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-> (condition) ?if_True : if_False

编辑:我想补充一点,通知并不是一件非常糟糕的事情。没有通知是最好的,但它不应该让你在晚上保持清醒。

于 2013-06-25T12:31:09.170 回答
1

我的猜测是......如果你在你的条款中设置$result空。但是,在这种情况下,您没有向数组中添加任何内容。但是,您稍后的循环将持续条件定义为,因此将执行并尝试打印出数组索引 0,因为数组为空,所以不包含该索引。$numsub = 1else$numsub <= 1$resultNULL

将您的 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>

正如 Martijn 所建议的,您始终可以使用它isset()来找出是否存在数组索引。从您实现的逻辑来看,我认为您正试图确保该循环中的数组索引实际上被保证被设置,所以我猜它是上​​面描述的导致问题的小逻辑错误。

希望能帮助到你...

于 2013-06-25T12:33:02.373 回答