2015-08-28 4 views
0

Я пытаюсь настроить свой сайт PHP на моем сервере хостинга, который сделан из Codeigniter 2.2.0. Все хорошо только $end_date = $end_date ?: $start_date; эта строка кода генерирует ошибку синтаксического анализа -saying синтаксическую ошибку:Проблема с парсером PHP

syntax error, unexpected ':' . 

Мой хостинг-сервер PHP версии 5.2. Как я могу избежать этой ошибки?

ответ

1

Попробуйте

$end_date = (!empty($end_date)) ? $end_date : $start_date; 
+0

спасибо. Не могли бы вы рассказать мне, в чем разница между двумя строками. – Treadstone

+0

Нет необходимости использовать ['empty()'] (http://php.net/manual/en/function.empty.php). Оценка '$ end_date' в булевом контексте (как это происходит, когда это первый операнд [тернарного условного оператора] (http://php.net/manual/en/language.operators.comparison.php#language.operators. compare.ternary)) [так же, как '! пусто ($ end_date) '] (http://php.net/manual/en/types.comparisons.php). – axiac

+0

@Treadstone существует [разница между '$ end_date' и'! empty ($ end_date) 'в этом контексте] (http://php.net/manual/en/types.comparisons.php). – axiac

2

В PHP, сокращенная тройная оператор only available начиная с версии 5.3.

Цитата:

Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

+0

спасибо. Я понимаю. – Treadstone

0

местные и принимающие версии PHP были Дифференц.

Этот код разрешен в стенде.

$end_date = (!empty($end_date)) ? $end_date : $start_date; 
+0

Нет необходимости использовать ['empty()'] (http://php.net/manual/en/function.empty.php). Оценка '$ end_date' в булевом контексте (как это происходит, когда это первый операнд [тернарного условного оператора] (http://php.net/manual/en/language.operators.comparison.php#language.operators. compare.ternary)) [так же, как '! пусто ($ end_date) '] (http://php.net/manual/en/types.comparisons.php). – axiac

Смежные вопросы