$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
任何人都可以提供帮助。谢谢提前寻找答案。
答案 0 :(得分: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-&gt; (条件)? if_True:if_False
编辑:我想补充一点,通知不是一件坏事。没有通知是最好的,但它不应该让你在晚上保持清醒。
答案 1 :(得分:1)
我的猜测是这样的......如果$result
为空,则在$numsub = 1
子句中设置else
。但是,在这种情况下,您没有向数组添加任何内容。然而,您的后续循环将持续条件定义为$numsub <= 1
,因此将执行并尝试打印出数组索引0,因为$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>
正如Martijn建议的那样,您始终可以使用isset()
来确定数组索引是否存在。从您实现的逻辑开始,我认为您正在尝试确保该循环中的数组索引实际上保证设置,所以我猜它是上面描述的导致问题的小逻辑错误。
希望它有所帮助...