2013-08-13 2 views
0

Привет Я пытаюсь поместить массив в ввод параметров. Но проблема в том, что я получаю один пустой параметр. Я хочу удалить его.Как удалить пустой массив из ввода параметра в php

Вот что я пытаюсь сделать:

<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>"; 
    } 
} 

+1

Дополнительные проблемы с ваш код (хотя и не заслуживающий ответа): ''. Судя по тому, что вы могли отображать варианты вообще, я предполагаю, что некоторые пробелы/символы были потеряны в процессе копирования/вставки? –

+0

http://stackoverflow.com/questions/3507042/if-block-inside-echo-statement, чтобы сконденсировать ваш код немного больше – Fredd

ответ

4

Вы должны цикл один пункт меньше:

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

Последний $i ваш цикл "видит" это count($myarray) который 3 в вашем случае. Однако, поскольку массивы нулевые индексируются, элемент $myarray[3] не существует (он идет от 0 до 2). Ошибка if и $myarray[3], которая не существует: вы также получаете сообщение об ошибке уровня в ваших журналах сервера (это должно быть триггером, чтобы найти все это самостоятельно).

Чтобы предотвратить все это, используйте foreach:

foreach ($myarray as $color) { 
    // use $color instead of $myarray[$i] 
} 
+0

Какой смысл делать счет каждый раз? это плохая практика. –

+0

OMG..so легко это !!! Большое спасибо, я дам вам кредит за 9 минут :) –

+0

@loops -> Есть ли у вас другие способы предложить мне? –

2

В начале индекса массива от 0 до (длина массива -1), то следует отметить ваши для контура соответственно т.е.

$array_length = count($myarray); 

for ($i=0;$i < $array_length;$i++) { 
//your code 
} 
+0

:) Спасибо за ваш ответ :) –

Смежные вопросы