Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод echo
 
 автор: vasvas   (31.07.2008 в 10:08)   письмо автору
 
 

Здравствуйте,
{ for($i=0; $i < count($file); $i++)
{
$r="<option value=$file[$i]>$file[$i]</option><br>";
echo "$r";
}

Нужно, что бы выводилось следующим образом
option value=1>1</option>
option value=2>2</option>
и так далее, но выводится только
1
2
3

Подскажите, что делаю неверно?
Спасибо.

  Ответить  
 
 автор: GeorgeIV   (31.07.2008 в 10:15)   письмо автору
 
   для: vasvas   (31.07.2008 в 10:08)
 

все правильно, посмотри в броузере исходник, там этот код и увидишь

  Ответить  
 
 автор: Axxil   (31.07.2008 в 10:54)   письмо автору
 
   для: vasvas   (31.07.2008 в 10:08)
 

$r = '<select name="foo">';
for($i=0; $i < count($file); $i++)
{
$r .="<option value=$file[$i]>$file[$i]</option><br>";

$r .= '</select>';
echo "$r";

  Ответить  
 
 автор: Trianon   (31.07.2008 в 11:00)   письмо автору
 
   для: Axxil   (31.07.2008 в 10:54)
 

$r = '<select name="foo">';
for($i=0; $i < count($file); $i++)
{
  $f = $file[$i];
  $r .="<option value=$f >$f </option><br>";

$r .= '</select>';
echo "$r"; 

  Ответить  
 
 автор: Axxil   (31.07.2008 в 11:11)   письмо автору
 
   для: Trianon   (31.07.2008 в 11:00)
 

тогда уж


<?
$r 
'<select name="foo">';
for(
$i=0$i count($file); $i++)
{
  
$f $file[$i];
  
$r .='<option value="'.$f.'">'.$f.'</option>';

$r .= '</select>';
echo 
$r
?>


А в чём преимущество?

  $f = $file[$i];
  $r .="<option value=$f >$f </option>";


перед

$r .="<option value=$file[$i]>$file[$i]</option>";

  Ответить  
 
 автор: Trianon   (31.07.2008 в 11:38)   письмо автору
 
   для: Axxil   (31.07.2008 в 11:11)
 

в чем-то Вы правы... оба эти фрагмента работают одинаково.
Но каждый раз гадать (или как вариант - вспоминать), как будет интерполироваться выражение в строке, по-моему - перевод мозгов.

Интерполяция выражений (не переменных) - одно из неортогональных мест в синтаксисе языка, и по-моему, её следует избегать.

Я не понимаю, почему при
$p = 'foo'; $q = array('foo' => 'bar');

$s = " ....  $q[$p] ...." 
и
$s = " ....  $q['foo'] ...."
дают разный результат,
а
$s = " ....  $q[$p] ...." 
и
 $s = " ....  $q[foo] ...."
- одинаковый.
Более того, почему $q[foo] дает результат вообще.
То есть не понимаю не то, в следствие чего так происходит, конечно,
а почему дизайнеров такого подхода в детстве никто не пристре... хм... не отговорил идти в дизайнеры.

Поэтому стараюсь такими нестабильными конструкциями не пользоваться.

  Ответить  
 
 автор: Axxil   (31.07.2008 в 11:47)   письмо автору
 
   для: Trianon   (31.07.2008 в 11:38)
 

> а почему дизайнеров такого подхода в детстве никто не пристре...
Типа свобода. Что хочу то и ворочу. PHP ж спонтанно родился. И никто его не проектировал и не контролировал. Вот и проскакивают разные перлы.
Подобные мудрённости синтаксиса почему-то обожают давать в качестве тестов на собеседованиях т.н. гуру, зачем-то решив, что так профессионала можно быстрее вычислить. Да что уж собеседования. Официальная сертификация на ZCE полна таких конструкций.

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

  Ответить  
 
 автор: GeorgeIV   (31.07.2008 в 12:22)   письмо автору
 
   для: Axxil   (31.07.2008 в 11:47)
 

Вообще то где то я читал, что не рекомендуется брать ключи массива ни в какие кавычки, если переменная находится внутри двойных кавычек.

  Ответить  
 
 автор: Axxil   (31.07.2008 в 12:28)   письмо автору
 
   для: GeorgeIV   (31.07.2008 в 12:22)
 

"всегда ключи массива беру в кавычки" AND "никогда не запихиваю переменные непосредственно в строки"

  Ответить  
 
 автор: GeorgeIV   (31.07.2008 в 12:35)   письмо автору
 
   для: Axxil   (31.07.2008 в 12:28)
 

Для вывода элемента массива в строке кавычки (ни двойные, ни одинарные) указывать не следует:

Цитата из учебника по PHP, расположенного здесь же, на сервере.
Другое дело, что я тоже никогда не запихиваю перемеенные в строки, ну а это для тех, кто делает.

  Ответить  
 
 автор: sim5   (31.07.2008 в 12:52)   письмо автору
 
   для: GeorgeIV   (31.07.2008 в 12:35)
 

Да, потому, что в этом случае будет ошибка:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in...

  Ответить  
 
 автор: Axxil   (31.07.2008 в 12:53)   письмо автору
 
   для: GeorgeIV   (31.07.2008 в 12:35)
 

Для вывода элемента массива в строке кавычки (ни двойные, ни одинарные) указывать не следует:

Надо дополнить:
Но, ключи массива надо ВСЕГДА заключать в кавычки


И издать закон, обязующий это делать всех разработчиков.

Иначе головная боль гарантирована:

Есть сторонняя, довольно большая и наворочанная программа. Когда я ее в первый раз
 запустил, то увидел в браузере не интерфейс программы, а длиннющий список ошибок, уходящий
 глубок вниз браузера. Начал разбираться в чем дело и понял, что все ассоциативные массивы 
написаны в коде этой программы таким образом:
$G[country] = 7;

а не так:
$G['country'] = 7;
и не так:
$G["country"] = 7;
То есть, имя в ассоциативном массиве не берется в кавычки. Если в настройках самого PHP, в
файле php.ini директиву написать так:
display_errors = Off
то ошибки в браузере сразу пропадают и программа начинает замечательно работать.


http://forum.php.su/topic.php?forum=1&topic=856

  Ответить  
 
 автор: GeorgeIV   (31.07.2008 в 13:24)   письмо автору
 
   для: Axxil   (31.07.2008 в 12:53)
 

Автор: Axxil   (31.07.2008 в 12:53)
Для вывода элемента массива в строке кавычки (ни двойные, ни одинарные) указывать не следует:  

Надо дополнить:
Но, ключи массива надо ВСЕГДА заключать в кавычки  


Это именно к ключам и относилось, что в строке их не надо заключать в кавычки

  Ответить  
 
 автор: Axxil   (31.07.2008 в 13:30)   письмо автору
 
   для: GeorgeIV   (31.07.2008 в 13:24)
 

Я имею ввиду, что ключи всегда надо заключать в кавычки а строки надо объединять с помощью точки.
Тогда гарантировано начинающий разработчик избавит себя от части проблем в дальнейшем.

  Ответить  
 
 автор: GeorgeIV   (31.07.2008 в 13:41)   письмо автору
 
   для: Axxil   (31.07.2008 в 13:30)
 

Тут согласен

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования