Что означает этот синтаксис (page = $ page? $ Page: 'default') в PHP?

Я новичок в PHP. Я встречал этот синтаксис в WordPress. Что делает последняя строка этого кода?

$page = $_SERVER['REQUEST_URI'];
$page = str_replace("/","",$page);
$page = str_replace(".php","",$page);
$page = $page ? $page : 'default'

person jest    schedule 20.01.2010    source источник
comment
Вау! подавляющие отзывы .. :) спасибо   -  person jest    schedule 20.01.2010
comment
возможный дубликат Справка - что означает этот символ в PHP?   -  person outis    schedule 01.04.2012


Ответы (7)


Это пример условного оператора в PHP.

Это сокращенная версия:

if (something is true ) {
    Do this
}
else {
    Do that
}

См. Использование тернарных операторов If / Else http://php.net/manual/en/language.operators.comparison.php < / em>.

person Cups    schedule 20.01.2010

Это тернарный оператор:

Эта строка переводится как

if ($page)
    $page = $page;
else
    $page = 'default';
person echo    schedule 20.01.2010
comment
Что вы имеете в виду под условным оператором. Разве вы не имеете в виду тернарный оператор (один из условных операторов s)? - person Peter Mortensen; 14.12.2015
comment
Изначально я написал тернарный оператор. @Ether отредактировал его и изменил на условный. Любопытный. - person echo; 22.12.2015
comment
тернарный оператор неоднозначен, потому что их может быть больше одного. - person Ether; 23.12.2015
comment
Документы, похоже, не согласны: еще один условный оператор - это?: (Или тернарный) оператор. - person echo; 24.12.2015

Это тернарная операция, которая не является специфической для PHP или WordPress, она существует на большинстве языков.

(condition) ? true_case : false_case 

Таким образом, в этом случае значение $ page будет "по умолчанию", когда $ page чем-то похожим на false - в противном случае оно останется неизменным.

person Nils Riedemann    schedule 20.01.2010

Это означает, что если у $ page нет значения (или оно равно нулю), установите для него значение «по умолчанию».

person wallyk    schedule 20.01.2010

Это означает, что если переменная $ page не пуста, тогда назначьте переменную $ page в последней строке этой переменной или установите для нее имя страницы по умолчанию.

Он называется условным оператором

person Sarfraz    schedule 20.01.2010
comment
Он ошибочно назван тернарным оператором, хотя на самом деле он просто тернарный оператор. Допустим, что на большинстве языков это единственный реализованный тернарный оператор, но это не препятствует созданию других операторов, которые принимают 3 аргумента. Например, в языке может быть оператор для объявления функций, очень похожий на оператор : Форта, который работает с именем функции, списком параметров и блоком кода. Это также будет тернарный оператор. - person slebetman; 20.01.2010
comment
Условный оператор? Вы не имеете в виду тернарный оператор? - person Peter Mortensen; 14.12.2015

Более подробный синтаксис последней строки:

if ($page)
{
    $page = $page;
}
else
{
    $page = 'default';
}
person Karsten    schedule 20.01.2010