PHP那条线意味着什么?

时间:2014-01-13 12:30:16

标签: php yii

我是首发php开发人员,我知道,如果是,或者,如果...但我不理解那些:?和其他符号。所以你能告诉我这句话意味着什么:

$success = $success ? $b->save(false) : $success;

if (!success) // shouldn't this be without "!"
    $transaction->commit(); // this means "do the job, if ok"
  else
    $transaction->rollBack(); // this means "don't do the job, if not ok"

另外,你能告诉我怎么称这个符号,我不知道他们的名字,所以我找不到关于他们的教程

3 个答案:

答案 0 :(得分:4)

这在很多语言中非常常见,您可以在javascript中找到三元操作以及

这是if / else的简写。

?之前的部分是条件,下一部分是条件返回true时要执行的代码,最后一部分(:之后)返回false

condition ? if true : if false;

$a = 3 > 5 ? 'three is greater than five' : 'three is lesser than five';

在这种情况下,$a将为three is lesser than five;

我建议仅针对非常简单的条件/结果进行三元操作,否则,最终会编写较少可维护的代码,牺牲易读性的简洁性

答案 1 :(得分:2)

上述代码如果以前的交易$successtrue,请尝试$b->save(false),然后将$b->save(false)的返回值放入$success。< / p>

$b->save(false)表示无需验证即可保存,成功保存后,将返回true

然后if部分非常明确

答案 2 :(得分:2)

这是一个三元运算符,是if语句的简短形式。

$success = $success ? $b->save(false) : $success;

相同
if($success) {
    $success = $b->save(false);
} else {
    $success = $success;
}