理解PHP的三元运算符

Gue*_*sed 1 php if-statement

我理解while,ifs,fors,cases,arrays function和其他语法结构,我的编码经验是70年代风格的Fortran和T-SQL.

现在我正在尝试理解PHP,但偶尔似乎会将几个语句压缩成一个混淆的代码行.以下单行PHP的扩展等价物是什么?

$start = gt("start") === false ? 0 : intval(gt("start"));
Run Code Online (Sandbox Code Playgroud)

Ama*_*ali 5

它是一个三元运算符.它们通常具有以下格式:

expr1 ? expr2 : expr3;
Run Code Online (Sandbox Code Playgroud)

意思是:

if expr1 then return expr2 otherwise return expr3
Run Code Online (Sandbox Code Playgroud)

它可以看作如下:

您的代码可以重写为:

if (gt("start") === false) {
    $start = 0;
} else {
    $start = intval(gt("start"));
}
Run Code Online (Sandbox Code Playgroud)

它可以改进如下,以避免额外的函数调用:

if (($result = gt("start")) === false) {
    $start = 0;
} else {
    $start = intval($result);
}
Run Code Online (Sandbox Code Playgroud)