Php 代码替代

Php 代码替代,php,casting,Php,Casting,我可以替换吗 if(!$mail->Send()) { return false; } else { return true; } 用这个 return (bool)$mail->Send(); 无论$mail->Send()返回什么(它是一个三方对象) 是否有任何类型的(bool)与感叹号的作用不同?是的,您可以这样做,如果它不起作用,您可以这样做:返回$邮件->发送()您可以将其简化为: return $mail->Send() ? true : fal

我可以替换吗

if(!$mail->Send()) {
    return false;
} else {
    return true;
}
用这个

return (bool)$mail->Send();
无论$mail->Send()返回什么(它是一个三方对象)

是否有任何类型的(bool)与感叹号的作用不同?

是的,您可以这样做,如果它不起作用,您可以这样做:
返回$邮件->发送()

您可以将其简化为:

return $mail->Send() ? true : false;
是,允许使用以下类型:

允许的演员阵容包括:

  • (int),(整数)-强制转换为整数
  • (布尔),(布尔)-强制转换为布尔
  • (浮动),(双重),(实际)-转换为浮动
  • (字符串)-转换为字符串
  • (阵列)-强制转换为阵列
  • (对象)-强制转换到对象
  • (未设置)-强制转换为NULL(PHP5)
否则,也可以使用

return !!$mail->Send();

但是,对于将来查看您的代码的其他人来说,这不是很明显。

是的,您的替换工作正常

return (boolean)$mail->Send();
如果语句是以一种非常奇怪的方式编写的,
标记是逻辑的
而不是
,它只是简单地反转布尔值,所以它说


如果
$mail->Send()
真,则返回
,否则返回

,只要Send()函数的返回类型为布尔类型,就可以使用以下方法:

return $mail->Send();

使用双关(
!!
)的原因是显式地将
$mail->Send()
的返回类型强制转换为
bool
。我只是想让你知道:-)我知道-这是我对他的问题最初的回答;)哦,对了。我只是想给那些不一定知道的人补充一点解释;前一段时间这里有一个关于双刘海的问题。因为如果
$mail->Send()
失败,这将返回true,而不是false,这是更自然的行为,也是OP想要的。@Jam,我不确定你的意思。
返回$邮件->发送()?假:真?自从我第一次发表评论以来,您已经编辑了您的问题。我的意思是,如果
$mail->Send()
返回一个
false
值,在它反转结果之前先发出一声巨响(
),如果
$mail->Send()
是真的,那么整批都返回
false
,反之亦然,这是违反直觉的(错误时正确),也不是OP想要的行为。哎呀,那实际上是个打字错误!哎呀,我以为我输入了
$mail-Send()
。然后我想了想,觉得三元格式对未来的代码读者来说更为有意。我不确定$mail->Send()返回什么,我正在重写一个三方对象的代码示例,我想要一个布尔值。然后使用以下命令确保结果被转换为布尔值:return$邮件->发送()@路易斯,我会小心使用你不知道的任何东西,比如返回类型。第三方代码没有文档吗?您也可以
return!!($mail->Send())