Php 这是什么意思$长度=空===$length?斯特伦(数据):(整数)$长度;

Php 这是什么意思$长度=空===$length?斯特伦(数据):(整数)$长度;,php,Php,我或多或少知道三元运算符。 但我看不懂这句话 $length = null === $length ? strlen($data) : (int)$length ; $length=null===$length意味着什么 非常感谢, MEM它相当于 if (null === $length) $length = strlen($data); else $length = (int)$length; 这相当于 if (null === $length) $length = strl

我或多或少知道三元运算符。 但我看不懂这句话

$length = null === $length ? strlen($data) : (int)$length ;
$length=null===$length意味着什么

非常感谢, MEM

它相当于

if (null === $length)
  $length = strlen($data);
else
  $length = (int)$length;
这相当于

if (null === $length)
  $length = strlen($data);
else
  $length = (int)$length;
这意味着:

如果
$length
的值为
null
,则将
strlen($data)
分配给
$length
,否则
(int)$length


如果括号放在正确的位置,则更容易理解:

$length = (null === $length) ? strlen($data) : (int)$length ;
这意味着:

如果
$length
的值为
null
,则将
strlen($data)
分配给
$length
,否则
(int)$length


如果括号放在正确的位置,则更容易理解:

$length = (null === $length) ? strlen($data) : (int)$length ;

这基本上与

if ($length === null)
{
    $length = strlen($data)
}
else
{
    $length = (int)$length;
}

这基本上与

if ($length === null)
{
    $length = strlen($data)
}
else
{
    $length = (int)$length;
}
这意味着

if (null === $length) {
   $length = strlen($data);
} else {
   $length = (int)$length ;
}
这意味着

if (null === $length) {
   $length = strlen($data);
} else {
   $length = (int)$length ;
}
===表示$length必须完全为null。看


===表示$length必须完全为null。请参阅。

它与$length=(null===$length?strlen($data):(int)$length)相同

它与$length=(null===$length?strlen($data):(int)$length)相同

添加几个括号应该可以清楚地说明:

$length = (null === $length ? strlen($data) : (int)$length);

另外,使用
null===$length
而不是
$length===null
只是一种编码风格,主要用于对付愚蠢的编译器,这些编译器不向您发出类似于
if(foo=null){
的警告,而不是
if(foo==null){
的警告。添加两个括号应该可以清楚:

$length = (null === $length ? strlen($data) : (int)$length);

另外,使用
null===$length
而不是
$length===null
只是一种编码风格,主要用于对付愚蠢的编译器,这些编译器不警告您类似于
if(foo=null){
而不是
if(foo==null){

a==b意味着a和b是相同的类型


因此,如果$length==null,那么$length=strlen($data)else$length

a==b表示a与b相同,并且它们的类型相同


因此,如果$length==null,那么$length=strlen($data)else$length

表示真正的程序员使用的“只写代码”,表示“只写代码”由真正的程序员使用+1对于添加括号的示例,它真的更清晰。谢谢,它真的使那些括号变得不同。;+1对于添加括号的示例,它真的更清晰。谢谢,它真的使那些括号变得不同。:)Felix Kling家长?谢谢。:)Felix Kling家长?谢谢。:)Thanks:)我不知道null===$length vs$length====null:)谢谢:)我不知道null====$length vs$length===null:)谢谢:)为什么我开始觉得自己像个哑巴?:s;)谢谢:)为什么我开始觉得自己像个哑巴?:s;)