PHP ===和?和:符号含义

时间:2014-07-23 05:07:10

标签: php

这是WebSocket客户端的摘录,以下代码行是什么意思/做什么?

$frameHead[1] = ($masked === true) ? $payloadLength + 128 : $payloadLength;

我这样读(见下文)

If Masked == True Then $frameHeadHead[1] = $payloadLength + 128 / $payloadLength

我不理解($masked === true)以及我不理解: $payLoadLength;:符号是什么?)

如果Masked == False怎么办?没有结果?

6 个答案:

答案 0 :(得分:7)

那个(?:)被称为 ternary operator

(condition) ? /* if condition is true then return this value */ 
            : /* if condition is false then return this value */ ;

=== 也会比较对象的内部对象ID。它用于严格比较。 "==="表示它们是相同的。

旁注:

  

注意:请注意,三元运算符是一个表达式   它不会评估变量,而是评估表达式的结果。   知道是否要返回变量非常重要   参考。声明返回$ var == 42? $ a:$ b;在一个   因此,按引用返回功能将不起作用并发出警告   在以后的PHP版本中发布。

答案 1 :(得分:5)

$frameHead[1] = ($masked === true) ? $payloadLength + 128 : $payloadLength;

it  conditional statement like if and else  

 if($masked === true){ $payloadLength + 128 } else {$payloadLength;}

答案 2 :(得分:3)

首先:===检查值和类型是否相等(因此当false==0为真时,false===0不是'{t}}。相反的是!==

var=bool ? value1 : value2语句与:

相同
if(bool){
  var=value1;
}else{
  var=value2;
}

所以你的行转换为:

if($masked===true){
  $frameHead[1] = $payloadLength + 128;
}else{
  $frameHead[1] = $payloadLength;
}

答案 3 :(得分:2)

If Masked == True Then $frameHeadHead[1] = $payloadLength + 128 
Else $frameHeadHead[1] = $payloadLength

答案 4 :(得分:2)

ternary operator

$frameHead[1] = ($masked === true) ? $payloadLength + 128 : $payloadLength;

意思是:

If Masked === True 

Then $frameHeadHead[1] = $payloadLength + 128 

Else

Then $frameHeadHead[1] = $payloadLength

答案 5 :(得分:2)

检查以下内容:

为什么我们使用===而不是==?

==用于匹配值。 ===用于将值与数据类型匹配。

更确切地说,让我们检查一个例子 -

99 == "99" // true
99 === "99" // false

(?:)表示

这称为三元运算符。这意味着

$frameHead[1] = ($masked === true) ? $payloadLength + 128 : $payloadLength;

if ($masked === true) {
    $frameHead[1] = $payloadLength + 128;
} else {
   $frameHead[1] = $payloadLength;
}