2014-02-05 3 views
1

Я пытаюсь понять это: «?», что смысл «:» оператор PHP

$page = isset($requestvars['page']) ? $requestvars['page'] : 1; 

$product = isset($requestvars['product']) ? $requestvars['product'] : '' 

Но я не понять, что .. Это будет похоже на простое, если?

Thanks

+0

'?' Означает, если. ':' означает еще –

+0

http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary –

+1

это истинное '?' Да! ':' Нет :-( – DanFromGermany

ответ

8

Это называется ternary operator и по существу заменяет блок if else.

Например:

$page = isset($requestvars['page']) ? $requestvars['page'] : 1; 

Может быть переписано в виде:

if(isset($requestvars['page'])) 
{ 
    $page = $requestvars['page']; 
} 
else 
{ 
    $page = 1; 
} 

Тройная оператор говорит PHP, чтобы назначить $requestvars['page'] к $page, если задано значение, в противном случае для назначения 1.

+0

Ничего себе вы набираете очень быстро. Я был только на полпути ... и теперь я только понял, что вы сделали редактирование на своем посте тоже. Sad :(+1 все еще. – Albzi

0

Это тернарное выражение.

Это гораздо более четко отображается как if/else, но некоторые люди действительно им нравятся.

+0

Большинство людей любят их из-за их небольшой занимаемой площади и встроенной способности. – BenM

+0

Да, но они могут легко понять код, очень плотный, когда он плохо используется. Стиль - это то, что есть, я склонен к простому улыбаться и кивать на них. – useSticks

0

Это называется тройной операцией. Это, в основном, inline if.

$product = isset($variable) ? do something if true : do something if false; 

Это всего лишь короткие формы для написания строки, если. Очень полезно для поддержания чистого кода при тестировании.

1

Это ternary operator. Он работает как оператор if, но он короче.

echo ($a === true) ? 'yep' : 'nope'; 

Начиная с PHP 5.3, есть также короткая версия, то ?: оператор, который проверяет только выражение и возвращает само выражение в случае успеха, или другой вариант в противном случае.

$foo = getSomethingFromTheDb(); 
$default = new stdObject; 

$object = $foo ?: $default; 
Смежные вопросы