锟饺斤拷锟斤拷锟斤拷锟�

锟饺斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟酵拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞撅拷模锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷值锟斤拷锟叫比较★拷锟斤拷锟斤拷锟皆参匡拷 PHP 锟斤拷锟酵比较憋拷锟斤拷锟斤拷同锟斤拷锟斤拷锟洁互锟饺较碉拷锟斤拷锟接★拷

锟饺斤拷锟斤拷锟斤拷锟�
锟斤拷锟斤拷 锟斤拷锟斤拷 锟斤拷锟�
$a == $b 锟斤拷锟斤拷 TRUE锟斤拷锟斤拷锟斤拷锟斤拷锟阶拷锟斤拷锟� $a 锟斤拷锟斤拷 $b锟斤拷
$a === $b 全锟斤拷 TRUE锟斤拷锟斤拷锟� $a 锟斤拷锟斤拷 $b锟斤拷锟斤拷锟斤拷锟斤拷锟角碉拷锟斤拷锟斤拷也锟斤拷同锟斤拷
$a != $b 锟斤拷锟斤拷 TRUE锟斤拷锟斤拷锟斤拷锟斤拷锟阶拷锟斤拷锟� $a 锟斤拷锟斤拷锟斤拷 $b锟斤拷
$a <> $b 锟斤拷锟斤拷 TRUE锟斤拷锟斤拷锟斤拷锟斤拷锟阶拷锟斤拷锟� $a 锟斤拷锟斤拷锟斤拷 $b锟斤拷
$a !== $b 锟斤拷全锟斤拷 TRUE锟斤拷锟斤拷锟� $a 锟斤拷锟斤拷锟斤拷 $b锟斤拷锟斤拷锟斤拷锟斤拷锟角碉拷锟斤拷锟酵诧拷同锟斤拷
$a < $b 小锟斤拷 TRUE锟斤拷锟斤拷锟� $a 锟较革拷小锟斤拷 $b锟斤拷
$a > $b 锟斤拷锟斤拷 TRUE锟斤拷锟斤拷锟� $a 锟较革拷锟斤拷锟� $b锟斤拷
$a <= $b 小锟节碉拷锟斤拷 TRUE锟斤拷锟斤拷锟� $a 小锟节伙拷锟竭碉拷锟斤拷 $b锟斤拷
$a >= $b 锟斤拷锟节碉拷锟斤拷 TRUE锟斤拷锟斤拷锟� $a 锟斤拷锟节伙拷锟竭碉拷锟斤拷 $b锟斤拷
$a <=> $b 太锟秸达拷锟斤拷锟斤拷锟斤拷锟斤拷锟较比较凤拷锟斤拷 锟斤拷$a小锟节★拷锟斤拷锟节★拷锟斤拷锟斤拷$b时 锟街别返伙拷一锟斤拷小锟节★拷锟斤拷锟节★拷锟斤拷锟斤拷0锟斤拷integer 值锟斤拷 PHP7锟斤拷始锟结供.
$a ?? $b ?? $c NULL 锟较诧拷锟斤拷锟斤拷锟斤拷 锟斤拷锟斤拷锟斤拷锟揭碉拷一锟斤拷锟斤拷锟斤拷锟揭诧拷为 NULL 锟侥诧拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟矫伙拷卸锟斤拷锟斤拷也锟轿� NULL锟斤拷锟津返伙拷 NULL锟斤拷PHP7锟斤拷始锟结供锟斤拷

锟斤拷锟斤拷冉锟揭伙拷锟斤拷锟斤拷趾锟斤拷址锟斤拷锟斤拷锟斤拷弑冉锟斤拷婕帮拷锟斤拷锟斤拷锟斤拷锟斤拷莸锟斤拷址锟斤拷锟斤拷锟斤拷锟斤拷址锟斤拷锟斤拷岜�转锟斤拷为锟斤拷值锟斤拷锟揭比较帮拷锟斤拷锟斤拷值锟斤拷锟斤拷锟叫★拷锟剿癸拷锟斤拷也锟斤拷锟斤拷锟斤拷 switch 锟斤拷洹o拷锟斤拷锟� === 锟斤拷 !== 锟斤拷锟叫比斤拷时锟津不斤拷锟斤拷锟斤拷锟斤拷转锟斤拷锟斤拷锟斤拷为锟斤拷时锟斤拷锟酵猴拷锟斤拷值锟斤拷要锟饺对★拷

<?php
var_dump
(== "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

switch ("a") {
case 
0:
    echo 
"0";
    break;
case 
"a"// never reached because "a" is already matched with 0
    
echo "a";
    break;
}
?>
<?php  
// Integers
echo <=> 1// 0
echo <=> 2// -1
echo <=> 1// 1
 
// Floats
echo 1.5 <=> 1.5// 0
echo 1.5 <=> 2.5// -1
echo 2.5 <=> 1.5// 1
 
// Strings
echo "a" <=> "a"// 0
echo "a" <=> "b"// -1
echo "b" <=> "a"// 1
 
echo "a" <=> "aa"// -1
echo "zz" <=> "aa"// 1
 
// Arrays
echo [] <=> []; // 0
echo [123] <=> [123]; // 0
echo [123] <=> []; // 1
echo [123] <=> [121]; // 1
echo [123] <=> [124]; // -1
 
// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo 
$a <=> $b// 0
 
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo 
$a <=> $b// -1
 
$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo 
$a <=> $b// 1
 
// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo 
$a <=> $b// 1

?>

锟斤拷锟节讹拷锟斤拷锟斤拷锟酵o拷锟饺斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷卤锟饺较o拷锟斤拷顺锟津)★拷

锟饺较讹拷锟斤拷锟斤拷锟斤拷
锟斤拷锟斤拷锟斤拷 1 锟斤拷锟斤拷 锟斤拷锟斤拷锟斤拷 2 锟斤拷锟斤拷 锟斤拷锟�
null 锟斤拷 string string 锟斤拷 NULL 转锟斤拷为 ""锟斤拷锟斤拷锟斤拷锟斤拷锟街伙拷驶锟饺斤拷
bool 锟斤拷 null 锟轿猴拷锟斤拷锟斤拷锟斤拷锟斤拷 转锟斤拷为 bool锟斤拷FALSE < TRUE
object object 锟斤拷锟斤拷锟斤拷锟斤拷远锟斤拷锟斤拷约锟斤拷谋冉希锟斤拷锟酵拷嗖伙拷鼙冉希锟斤拷锟酵拷锟斤拷锟斤拷锟斤拷同锟斤拷锟斤拷式锟饺斤拷锟斤拷锟皆o拷PHP 4 锟叫o拷锟斤拷PHP 5 锟斤拷锟斤拷锟皆硷拷锟斤拷说锟斤拷
string锟斤拷resource 锟斤拷 number string锟斤拷resource 锟斤拷 number 锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷源转锟斤拷锟斤拷锟斤拷锟街o拷锟斤拷锟斤拷通锟斤拷学锟饺斤拷
array array 锟斤拷锟叫斤拷锟劫筹拷员锟斤拷锟斤拷锟斤拷锟叫★拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 1 锟叫的硷拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 2 锟斤拷锟斤拷锟斤拷锟斤拷锟睫凤拷锟饺较o拷锟斤拷锟津挨革拷值锟饺较o拷锟斤拷锟斤拷锟斤拷锟斤拷
object 锟轿猴拷锟斤拷锟斤拷锟斤拷锟斤拷 object 锟斤拷锟角革拷锟斤拷
array 锟轿猴拷锟斤拷锟斤拷锟斤拷锟斤拷 array 锟斤拷锟角革拷锟斤拷

Example #1 锟斤拷准锟斤拷锟斤拷冉洗锟斤拷锟�

<?php
// 锟斤拷锟斤拷锟斤拷锟矫憋拷准锟饺斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷冉系锟�
function standard_array_compare($op1$op2)
{
    if (
count($op1) < count($op2)) {
        return -
1// $op1 < $op2
    
} elseif (count($op1) > count($op2)) {
        return 
1// $op1 > $op2
    
}
    foreach (
$op1 as $key => $val) {
        if (!
array_key_exists($key$op2)) {
            return 
null// uncomparable
        
} elseif ($val $op2[$key]) {
            return -
1;
        } elseif (
$val $op2[$key]) {
            return 
1;
        }
    }
    return 
0// $op1 == $op2
}
?>

Example #2 Transcription of standard array comparison

<?php
// Arrays are compared like this with standard comparison operators
function standard_array_compare($op1$op2)
{
    if (
count($op1) < count($op2)) {
        return -
1// $op1 < $op2
    
} elseif (count($op1) > count($op2)) {
        return 
1// $op1 > $op2
    
}
    foreach (
$op1 as $key => $val) {
        if (!
array_key_exists($key$op2)) {
            return 
null// uncomparable
        
} elseif ($val $op2[$key]) {
            return -
1;
        } elseif (
$val $op2[$key]) {
            return 
1;
        }
    }
    return 
0// $op1 == $op2
}
?>

锟轿硷拷 strcasecmp()锟斤拷strcmp()锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟�锟斤拷锟斤拷锟斤拷锟铰节★拷

Warning

锟饺较革拷锟斤拷锟斤拷

锟斤拷锟节革拷锟斤拷锟斤拷 float 锟斤拷锟节诧拷锟斤拷锓绞斤拷锟斤拷锟接︼拷冉锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟�float锟角凤拷锟斤拷取锟�

锟斤拷锟斤拷锟斤拷息锟轿硷拷 float锟斤拷

锟斤拷元锟斤拷锟斤拷锟�

锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟�"?:"锟斤拷锟斤拷锟斤拷元锟斤拷锟斤拷锟斤拷锟� 锟斤拷

Example #3 锟斤拷默锟斤拷值

<?php
// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' $_POST['action'];

// The above is identical to this if/else statement
if (empty($_POST['action'])) {
    
$action 'default';
} else {
    
$action $_POST['action'];
}

?>
锟斤拷锟绞� (expr1) ? (expr2) : (expr3) 锟斤拷 expr1 锟斤拷值为 TRUE 时锟斤拷值为 expr2锟斤拷锟斤拷 expr1 锟斤拷值为 FALSE 时锟斤拷值为 expr3锟斤拷

锟斤拷 PHP 5.3 锟金,匡拷锟斤拷省锟斤拷锟斤拷元锟斤拷锟斤拷锟斤拷屑锟斤拷遣锟斤拷帧锟斤拷锟斤拷式 expr1 ?: expr3 锟斤拷 expr1 锟斤拷值为 TRUE 时锟斤拷锟斤拷 expr1锟斤拷锟斤拷锟津返伙拷 expr3锟斤拷

Note: 注锟斤拷锟斤拷元锟斤拷锟斤拷锟斤拷歉锟斤拷锟戒,锟斤拷锟斤拷锟斤拷锟街碉拷锟斤拷潜锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷慕锟斤拷锟斤拷锟斤拷锟斤拷锟酵拷锟斤拷锟斤拷梅锟斤拷锟揭伙拷锟斤拷锟斤拷锟斤拷锟斤拷秃锟斤拷锟揭拷锟斤拷锟揭伙拷锟酵拷锟斤拷锟斤拷梅锟斤拷氐暮锟斤拷锟斤拷锟斤拷锟斤拷 return $var == 42 ? $a : $b; 锟斤拷锟斤拷锟斤拷锟斤拷锟矫o拷锟皆猴拷锟� PHP 锟芥本锟斤拷为锟剿凤拷锟斤拷一锟斤拷锟斤拷锟芥。

Note:

锟斤拷锟斤拷锟斤拷饨拷锟皆拷锟斤拷锟斤拷锟窖伙拷锟斤拷一锟斤拷使锟矫★拷锟斤拷锟斤拷一锟斤拷锟斤拷锟斤拷锟绞癸拷枚锟斤拷锟斤拷元锟斤拷锟斤拷锟绞憋拷锟斤拷锟斤拷 PHP 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷

Example #4 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷元锟斤拷锟斤拷锟斤拷锟轿�

<?php
// 乍锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 'true'
echo (true?'true':false?'t':'f');

// 然锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷实锟斤拷锟斤拷锟斤拷锟�'t'锟斤拷锟斤拷为锟斤拷元锟斤拷锟斤拷锟斤拷谴锟斤拷锟斤拷锟斤拷壹锟斤拷锟斤拷

// 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷燃鄣锟斤拷锟戒,锟斤拷锟斤拷锟斤拷锟斤拷
echo ((true 'true' 'false') ? 't' 'f');

// here, you can see that the first expression is evaluated to 'true', which
// in turn evaluates to (bool)true, thus returning the true branch of the
// second ternary expression.
?>