PHP:三元表达式中的多个语句

时间:2011-09-21 09:36:52

标签: php ternary

我有一个看起来像这样的函数:

function fun()
{
   $pMana < 20 ? error(1) : $pMana -= 20;
   //do stuff
}

我想在调用错误函数时,它也会退出函数,就像这样

function fun()
{
   $pMana < 20 ? (error(1); return) : $pMana -= 20; //invalid syntax
   //do stuff
}

我还没有看到一个能够处理多个这样的语句的三元表达式,但我是新手。有可能吗?

2 个答案:

答案 0 :(得分:3)

在这种情况下使用if语句。

三元运算符应该返回单个值,因此单个语句限制。您也不应该在三元运算符中使用具有任何重大副作用的函数。

你提出的建议不可避免地导致代码非常难以理解,你应该关注可读性,而不是线条数/字符数。大多数代码的读取次数都是编写/编辑的。

编辑:

您也可以将assert用于类似目的。

assert($pMana > 20);
$pMana -= 20

但是,永远不应该使用断言来处理常见情况(例如用户输入验证)。经验法则是失败的断言应始终指示代码中的错误。断言表达式应涵盖关于程序/程序状态的其他部分的输入的假设,其名称为“尽快捕获错误”的座右铭(在这种情况下,它将用于防止错误导致法力消失,可能导致错误稍后)。

答案 1 :(得分:0)

三元运算符通常用于为变量赋值。 逻辑语句应与“if”一起使用。