开发者

The meaning of ':' and '?' [duplicate]

开发者 https://www.devze.com 2023-01-22 23:45 出处:网络
This question already has answers here: Closed 12 years ago. 开发者_开发问答 Possible Duplicate: the code “ : ” in php
This question already has answers here: Closed 12 years ago. 开发者_开发问答

Possible Duplicate:

the code “ : ” in php

I often see a lot of php code using ? and :, but I don't actually understand what it is for. Here an example:

$selected = ($key == $config['default_currency']) ? ' selected="selected"' : '';

Can someone clear me up, please? :)


It's the ternary operator. It's basically a if / else on one line.

For example, those lines :

if (!empty($_POST['value'])) {
    $value = $_POST['value'];
} else {
    $value = "";
}

can be shortened by this line :

$value = (!empty($_POST['value'])) ? $_POST['value'] : "";

It can make code easier to read if you don't abuse it.


(condition ? val1 : val2)

evaluates to val1 if condition is true, or val2 if condition is false.


Since PHP 5.3, you may also see an even more obscure form that leaves out val1:

(val0 ?: val2)

evaluates to val0 if val0 evaluates to a non-false value, or val2 otherwise. Yikes!


See http://php.net/manual/en/language.operators.comparison.php


It's shorthand for an if statement

You can turn that statement into this:

if ($key == $config['default_currency']) {
    $selected = ' selected="selected"';
} else {
    $selected = '';
}


It's the ternary conditional operator, just like in C.

Your code is equivalent to:

if ($key == $config['default_currency'])
{
   $selected = ' selected="selected"';
}
else
{
   $selected = '';
}


In pseudocode,

variable = (condition) ? statement1 : statement2

maps to

if (condition is true)
then
variable = statement1
else
variable = statement2
end if
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号