我有这个代码循环遍历列表并将其发布在选项标记中.但是每当我尝试运行它时,我都会得到一个未定义的偏移通知.
<?php $datearray=array('Jan','Feb','Mar'); ?>
<?php for($d=0;$d<=sizeof($datearray);$d++){ ?>
<select title="mm" name="month" id="month" class="">
<option><?php echo $datearray[$d]; ?></option>
<?php } ?>
</select>
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?有没有更好的方法呢?
这是因为你使用的是<=而不是<.数组的sizeof(count)总是比最高索引的数量多一个.这是因为索引当然从0开始,但计数是实际数字 - 人数从1开始计算.
您还可以使用foreach迭代数组.
<?php foreach($datearray as $date){ ?>
<option><?php echo $date; ?></option>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)
作为关于使用的附注for,放入sizeof()for循环条件效率较低.这是因为PHP计算每个循环的计数.将sizeof结果分配给变量并与之比较更好.