0

こんにちは、配列をオプション入力に入れようとしています。しかし、問題は、空白のオプションが 1 つしかないことです。削除したいです。

これが私がやろうとしていることです:

<select name "x">
$myarray=array('black','blue','brown');
for ($i=0;$i<=count($myarray);$i++){
    if ( $row['colur']==$myarray[$i]) {//if value in database = array$i
        echo"<option value='$myarray[$i]' selected>$myarray[$i]</option>";
    } else {
        echo"<option value='$myarray[$i]'>$myarray[$i]</option>";
    }
}

4

2 に答える 2

4

ループする項目を 1 つ減らす必要があります。

for ($i=0;$i < count($myarray);$i++) {

ループが最後$iに「見る」のはcount($myarray)、あなたの場合は 3 です。ただし、配列のインデックスはゼロであるため、item$myarray[3]は存在しません (0 から 2 になります)。はif失敗し、$myarray[3]表示されますが、これは存在しません: サーバー ログにレベル "notice" のエラーも表示されます (これは、自分でこれをすべて見つけるためのトリガーになるはずです)。

これをすべて防ぐには、次を使用しますforeach

foreach ($myarray as $color) {
    // use $color instead of $myarray[$i]
}
于 2013-08-13T15:35:14.213 に答える
2

配列インデックスは 0 から (配列の長さ -1) まで始まるため、それに応じて for ループに言及する必要があります。

$array_length = count($myarray);

for ($i=0;$i < $array_length;$i++) {
//your code
}
于 2013-08-13T15:41:41.230 に答える