繁体   English   中英

三元运算符语法 (PHP)

[英]Ternary operator syntax (PHP)

刚刚学习了三元运算符,并希望以下内容起作用:

$dbh =new PDO('mysql:blad','user','pass');
(!$dbh) ? throw new Exception('Error connecting to database'); : return $dbh; 

相反,我收到以下错误:

parse error: syntax error, unexpected T_THROW in...

关于正确语法的任何想法?

谢谢

三元运算符的语法是expr1 ? expr2 : expr3 expr1 ? expr2 : expr3 一个表达,简而言之,就是“任何有价值的东西”

对于 PHP 8 之前的 PHP 版本, throw …return …不是表达式,它们是语句。 这意味着它们不能用作三元运算的操作数。

从 PHP 8 开始, throw ...是一个表达式,因此可以用作三元运算的操作数,而return ...仍然是一个语句。


在任何情况下,如果构造函数中存在问题,PDO 类都会抛出它自己的异常。 正确的(意思是,完整的)语法是这样的:

try {
    $dbh = new PDO('mysql:blad','user','pass');
    return $dbh;
} catch (PDOException $e) {
    throw new Exception('Error connecting to database');
}

也许没有分号,因为完整的三元运算符被视为一个必须以分号结尾的命令:

(!$dbh) ? throw new Exception('Error connecting to database') : return $dbh;  

所以不要在中间的某个地方结束命令:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM