Помогите понять как работает кусок кода

Статус
В этой теме нельзя размещать новые ответы.

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Привет)
При просмотре исходного кода нескольких скриптов постоянно натыкаюсь на конструкцию вида
PHP:
$sel = isset( $_POST['sel'] ) ? $_POST['sel'] : isset( $_GET['sel'] ) ? $_GET['sel'] : "";
Я никак не могу понять смысл подобной конструкции, какую роль выполняют знаки вопроса и двоеточия?
Это сокращённая форма написания какого-то цикла такая? Прочитал уже больше половины книги Котерова PHP 5 в подлиннике, но с разъяснением подобнй конструкции там нигде не встречался. Помогите плиз)

Вот ещё примеры в скрипте нашёл
PHP:
$icon_path = $row['big_icon_path'] ? $row['big_icon_path'] : $settings['photos_default'];

PHP:
$_SESSION['language_cd'] = intval( $rs->fields[0] ) ? intval( $rs->fields[0] ) : $config['default_lang'];
 
  • Заблокирован
  • #2
PHP:
$sel = isset( $_POST['sel'] ) ? $_POST['sel'] : isset( $_GET['sel'] ) ? $_GET['sel'] : "";  

if (isset( $_POST['sel'] )){
   $sel=$_POST['sel'];
}elseif(isset( $_GET['sel'] )){
   $sel=$_GET['sel'];
}else{
   $sel="";
}
 
это называется тернарный оператор
PHP:
( ($expression) ? ($value1) : ($value2) )
сперва вычисляется выражение перед знаком вопроса($expression), и приводится к true или false
если истинно, то все выражение вместе будет равно $value1
Если же $expression ложно, то все вместе выражение будет возвращать $value2

рекомендуется помещать тернарный оператор в круглые скобки.
связано это с тем, что у него три операнда(в отличии например от сложения), и не всегда лекго без скобок уследить за порядком его вычисления
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху