В предыдущем случае, прежде чем вызывать переменную её надо эвалюировать ( термином LISPа - это язык такой ... с круглыми скобками (; )
Для эвалюации и используется ${имя_переменной_как_строка}
( И почему нет? Я даже спецом проверил ... оба варианта работают )
Мало того
Цитата:
будет считать что $sel[01] до $sel[10] = "selected";
for ($i=1; $i<10; $i++) {
print "<option $sel[".sprintf("%02d", $i)."]>";
}
|
В этом случае
PHP код:
//for ($i=1; $i<10; $i++) $sel[$i] = "selected";
for ($i=1; $i<10; $i++) {echo "<option ".$sel[$i]." >";}
твой sprintf будет возвращать строчку для print'а а не для индексации массива ( видимо, да и по-логике, сначала в строках ищутся переменные, а только потом строки складываются для передачи в print () ).
Отсюда ошибка: Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING , что по-русски - он ждал индексации массива, так как нашел "[", а индексации не произошло.
Объясни на словах, что ты хочешь добиться?
PS Да, и старайся таки следовать принципу KISS.. Это и так плохой стиль, а ещё усложнять.... хотя смотри сам.
Добавлено через 14 минут:
Или, уж если очень хочется с 01 -09 то
PHP код:
//for ($i=1; $i<10; $i++) $sel[sprintf("%02d", $i)] = "selected";
for ($i=1; $i<10; $i++) print "<option ".$sel[sprintf("%02d", $i)].">";
Проверил. Работает.