За последние 24 часа нас посетили 18047 программистов и 1744 робота. Сейчас ищут 1008 программистов ...

Почему конкатенация так странно работает?

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

  1. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Здравствуйте!

    Пытаюсь сконкатенировать следующим образом:
    Код (Text):
    1. $this->orderDetails['details']['BT']->first_name . ' ' . (!empty($this->orderDetails['details']['BT']->middle_name)) ? $this->orderDetails['details']['BT']->middle_name : $this->orderDetails['details']['BT']->last_name
    по отдельности $this->orderDetails['details']['BT']->first_name и (!empty($this->orderDetails['details']['BT']->middle_name)) ? $this->orderDetails['details']['BT']->middle_name : $this->orderDetails['details']['BT']->last_name имеют значения, но когда я конкатенирую их то на выходе получаю только вторую правую часть из отчества либо фамилии.

    Почему так происходит и как можно исправить код?
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    втора правая часть это что за хрень?

    приоритеты операций — чую, что последнюю закрывающую скобочку надо передвинуть в самый конец выражения.

    Добавлено спустя 2 минуты 47 секунд:
    p.s. у тебя глаза не болят смотреть на $this->orderDetails['details']['BT'] $this->orderDetails['details']['BT'] $this->orderDetails['details']['BT'] $this->orderDetails['details']['BT'] ?
    сокращай - используй локальную переменную.
     
  3. dapperkop

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

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    болять...
     
  4. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    простите, забыл уже приоритеты... :)
    Вот так работает:
    Код (Text):
    1. $this->orderDetails['details']['BT']->first_name . ' ' . (!empty($this->orderDetails['details']['BT']->middle_name) ? $this->orderDetails['details']['BT']->middle_name : $this->orderDetails['details']['BT']->last_name)
    А как в первом неправильном случае все происходило, что оставалась правая часть?
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    "нет, я всё понял! но что конкретно?"