День добрый, господа! у меня есть строка для вывода: Код (Text): echo "<p>$ids[price-value]</p>"; при выводе возникает ошибка: а в следующем варианте всё работает: Код (Text): echo "<p>".$ids[price-value]."</p>"; Понимаю, что ошибка достаточно простая, но не могу понять что именно происходит. Очевидно, что интерпретатор принимает знак "-"(минус) за какой-то управляющий символ. Подскажите пожалуйста!
в данном случае парсер не правильно разделяет переменные от тегов PHP: echo "<p>$ids[price-value]</p>"; а во втором варианте PHP: echo "<p>".$ids[price-value]."</p>"; сами указали что к чему, поэтому проблем и не возникло.. Кстати 2й вариант является более правильной записью ИМХО а еще лучше поставить одинарные кавычки, чтобы запись в них выводилась сразу без обработки и анализа со стороны php PHP: echo '<p>'.$ids[price-value].'</p>';
Всем спасибо, я сделал, как сказал tommyangelo, тк мой второй вариант работал неправильно: $ids - ассоциативный массив, который возвращается функцией mysql_fetch_array() со множеством индексов, но в моём варианте Код (Text): echo "<p>".$ids[price-value]."</p>"; возвращалось значение не по индексу 'price-value', а по самому первому индексу, записанному в мускульной таблице (у меня это 'ID'). А по сему вариант Код (Text): echo "<p>{$ids['price-value']}</p>"; - единственно верный))
А по поводу конкатенации строк и переменных точкой - не знаю... ведь интерпретатор тратит время и на распознавание этих точек и разбиение выражения на лексемы так же, как и на поиск знака '$' в строке и извлечения значения переменной. имхо
я кстати сам всегда пользуюсь Код (Text): echo "<p>".$ids['price-value']."</p>"; Мне так понятнее. Особенно если учесть, что обычно работаю с объектами Код (Text): echo "<p>".$ids->price-value."</p>"; А еще - html отделяю от данных, так что получается Код (Text): <p><?php echo $ids->price-value ?></p> Но это уже потом, сам поймешь почему так