За последние 24 часа нас посетили 15633 программиста и 1554 робота. Сейчас ищут 918 программистов ...

Вывод массива в строке со знаком "-" в имени индек

Тема в разделе "Прочие вопросы по PHP", создана пользователем andreybugakov, 23 авг 2011.

  1. andreybugakov

    andreybugakov Активный пользователь

    С нами с:
    27 июн 2011
    Сообщения:
    38
    Симпатии:
    0
    День добрый, господа!
    у меня есть строка для вывода:

    Код (Text):
    1.  echo "<p>$ids[price-value]</p>";
    при выводе возникает ошибка:

    а в следующем варианте всё работает:
    Код (Text):
    1.  echo "<p>".$ids[price-value]."</p>";
    Понимаю, что ошибка достаточно простая, но не могу понять что именно происходит. Очевидно, что интерпретатор принимает знак "-"(минус) за какой-то управляющий символ.
    Подскажите пожалуйста!
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    echo "<p>{$ids['price-value']}</p>";
     
  3. andreybugakov

    andreybugakov Активный пользователь

    С нами с:
    27 июн 2011
    Сообщения:
    38
    Симпатии:
    0
    *примечание: работает неправильно!
     
  4. andreybugakov

    andreybugakov Активный пользователь

    С нами с:
    27 июн 2011
    Сообщения:
    38
    Симпатии:
    0
    Большое спасибо! Всё работает. А что делают фигурные скобки?
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
  6. hren2

    hren2 Активный пользователь

    С нами с:
    27 июн 2011
    Сообщения:
    41
    Симпатии:
    0
    в данном случае парсер не правильно разделяет переменные от тегов
    PHP:
    1.  echo "<p>$ids[price-value]</p>";
    а во втором варианте

    PHP:
    1. echo "<p>".$ids[price-value]."</p>";
    сами указали что к чему, поэтому проблем и не возникло.. Кстати 2й вариант является более правильной записью ИМХО
    а еще лучше поставить одинарные кавычки, чтобы запись в них выводилась сразу без обработки и анализа со стороны php
    PHP:
    1. echo '<p>'.$ids[price-value].'</p>';
     
  7. andreybugakov

    andreybugakov Активный пользователь

    С нами с:
    27 июн 2011
    Сообщения:
    38
    Симпатии:
    0
    Всем спасибо, я сделал, как сказал tommyangelo, тк мой второй вариант работал неправильно: $ids - ассоциативный массив, который возвращается функцией mysql_fetch_array() со множеством индексов, но в моём варианте
    Код (Text):
    1. echo "<p>".$ids[price-value]."</p>";
    возвращалось значение не по индексу 'price-value', а по самому первому индексу, записанному в мускульной таблице (у меня это 'ID').
    А по сему вариант
    Код (Text):
    1. echo "<p>{$ids['price-value']}</p>";
    - единственно верный))
     
  8. andreybugakov

    andreybugakov Активный пользователь

    С нами с:
    27 июн 2011
    Сообщения:
    38
    Симпатии:
    0
    А по поводу конкатенации строк и переменных точкой - не знаю... ведь интерпретатор тратит время и на распознавание этих точек и разбиение выражения на лексемы так же, как и на поиск знака '$' в строке и извлечения значения переменной. имхо
     
  9. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    я кстати сам всегда пользуюсь
    Код (Text):
    1.  echo "<p>".$ids['price-value']."</p>";
    Мне так понятнее. Особенно если учесть, что обычно работаю с объектами
    Код (Text):
    1. echo "<p>".$ids->price-value."</p>";
    А еще - html отделяю от данных, так что получается

    Код (Text):
    1. <p><?php echo $ids->price-value ?></p>
    Но это уже потом, сам поймешь почему так :)