За последние 24 часа нас посетили 16479 программистов и 1677 роботов. Сейчас ищут 886 программистов ...

Помогите разобрать $object

Тема в разделе "PHP для новичков", создана пользователем SaM1001, 4 мар 2014.

  1. SaM1001

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

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    У меня тут такая строчка
    Код (Text):
    1. print $object->street.($object->street && $object->adress_nr?"  ":"").$object->adress_nr;
    помогите к ней добавить вывод не только улицы и номера дома, а и дополнительное поле

    Код (Text):
    1. $object->adress_add
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    через точку добавляйте.
    И...вы код скопировали? У вас реально там пробелы в переменных?
     
  3. SaM1001

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

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Спасибо, сейчсас попробую... Ещё просьба, вы смогли бы "разобрать" эту строчку: к чему тут скобки и кавычки, чтобы на будущее я не задавал "глупых" вопросов.

    Пробелов не вижу, нет оных вроде бы
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    аватарку смени - скажу =)
     
  5. SaM1001

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

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Сменил=)
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    круто.
    я писал что
    Код (PHP):
    1. print $object->street.($object->street && $object->adress_nr?"  ":"").$object->adress_nr; 
    и интересовался, что же это значит. я отвечу =)
    принт - это печатать на экран. а точнее в стандартный буфер вывода.
    далее вызов свойства объекта складывается как строка (конкатенация называется) со скобками и другой строкой после скобок.
    в скобках происходит нестрогое сравнение на true. && логический оператор AND и это значит в данном контексте, что оба эти свойства должны быть не пустые. После этого дела стоит знак вопроса. Это короткий (тенарный) if. Т.е. если перед ним true, то будет использована часть выражения до двоеточия. Если false, то после.

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

    На самом деле, логично описать данную штуку вот так:
    Код (PHP):
    1. echo $object->street.($object->adress_nr ? " ".$object->adress_nr:"");
    2.  
    в качестве домашнего задания на прокачку мозгов, попробуй объяснить, почему так лучше.

    Добавлено спустя 1 минуту 57 секунд:
    война клоническая началась
     
  7. SaM1001

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

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0

    Спасибо, сейчас попробую всё это разложить у себя по полочкам, чтобы понять!!!

    ЗЫ: извини за аву!
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты не первый
     
  9. SaM1001

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

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Код (Text):
    1. echo $object->street.($object->adress_nr ? " ".$object->adress_nr:"");
    И если я хочу чтобы у этой строки дополнительное сравнение с выводом проходило, то будет выглядеть вот так:

    Код (Text):
    1. echo $object->street.($object->adress_nr ? " ".$object->adress_nr.$object->adress_add:"");
    поправь пожалуйста если не так
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если ты хочешь, чтобы при непустом $object->adress_nr выводилось сразу и $object->adress_nr, и $object->adress_add, а при пустом - не выводилось из них ничего, то да.
     
  11. SaM1001

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

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Спасибо огромное, не просто выручил, но ещё и объяснил что к чему!!!
    Потому, что adress_nr это номер дома, а adress_add это буквы к нему: a,б,в,г... поэтому, нет смысла выводить букву, если нет номера