Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Непонятки с тернарным оператором / 6 сообщений из 6, страница 1 из 1
20.12.2014, 12:29
    #38838655
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с тернарным оператором
Привет, есть незамысловатая конструкция:

Код: php
1.
2.
3.
4.
5.
6.
$registry->set("ipAddress", getenv('HTTP_CLIENT_IP')?:
                                getenv('HTTP_X_FORWARDED_FOR')?:
                                    getenv('HTTP_X_FORWARDED')?:
                                        getenv('HTTP_FORWARDED_FOR')?:
                                            getenv('HTTP_FORWARDED')?:
                                                getenv('REMOTE_ADDR'));



Локально версия пхп 5.3.13 - все ок.
На сервере 5.2.17-pl0-gentoo - вылазит ошибка: Parse error: syntax error, unexpected ':' in /home/m/mytavatuy/kabinet/public_html/coba/index.php on line 33

Подскажите, что не так то, сам разобраться не могу :( Заранее благодарю!
...
Рейтинг: 0 / 0
20.12.2014, 13:00
    #38838663
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с тернарным оператором
Вопрос решен: выставил на хостинге версию 5.3
...
Рейтинг: 0 / 0
20.12.2014, 13:54
    #38838683
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с тернарным оператором
korshun,

Ого... 5.3 реально такое хавает?
Правильно я понимаю, что это сокращение записи(?):

Код: php
1.
x?x:y


А теперь можно и
Код: php
1.
x?:y



P.s. Это очень полезно в плане читабельности кода, когда меньше временных переменных плодится для вставки в функции. (как в данном случае, взять первое не пустое значение).
...
Рейтинг: 0 / 0
20.12.2014, 22:21
    #38838840
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с тернарным оператором
Ага, запамятовал только, что конструкция работает только с пхп 5.3+

http://php.net/manual/ru/language.operators.comparison.php
Начиная с версии PHP 5.3 также стало возможным не писать среднюю часть тернарного оператора. Выражение expr1 ?: expr3 возвращает expr1 если expr1 имеет значение TRUE, и expr3 в другом случае.
...
Рейтинг: 0 / 0
21.12.2014, 13:21
    #38839028
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с тернарным оператором
korshun,

после таких адских "лесенок" даже пропадает желание защищаться PHP (или PHP-программистов) =(
...
Рейтинг: 0 / 0
21.12.2014, 14:04
    #38839049
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с тернарным оператором
JeStonekorshun,

после таких адских "лесенок" даже пропадает желание защищаться PHP (или PHP-программистов) =(
Извини, не понял, что ты имеешь в виду :(
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Непонятки с тернарным оператором / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]