您好我有一段代码:
if($request['txt_!'] != "") {
$randl1_1 = mt_rand(100000, 999999);
} else {
$randl1_1 = '';
}
当我将其转换为三元运算符时:
$randl1_1 = ($request['txt_1'] != "") ? mt_rand(100000, 999999) : '';
如果我在if中添加一些内容该怎么办?像,
if($request['txt_!'] != "") {
$randl1_1 = mt_rand(100000, 999999);
someFunction();
} else {
$randl1_1 = '';
}
是否可以在三元运算符中使用?
答案 0 :(得分:6)
这是可能的,但它会使三元的使用变得不那么有用,因为它会使它变得杂乱(特别是如果你想把它保持在一条线上)。如果您在表达式中将其作为RHS使用,则其返回值也将分配给$randl1_1
。
如果someFunction()
返回了一些真实的东西,那么......
$randl1_1 = ($request['txt_1'] != "") ? someFunction() && mt_rand(100000, 999999) : '';
如果没有,你可以使用||
。但正如你所看到的,这很难看。如果someFunction()
依赖于$randl1_1
,那么你就会遇到更糟糕的问题。 :)
在你的第二个案例中,我会使用你引用的更详细的例子。您希望您的代码能够清楚地表达自己和他人的意图。
尝试将所有东西变成三元组是一种不好的做法。
答案 1 :(得分:3)
您不能将多个语句放入三元运算符的参数中。但是,您可以使用逗号运算符来计算多个表达式:
$rand1_1 = ($request['txt_1'] != "") ? (someFunction(), mt_rand(100000, 999999)) : '';
但是,逗号运算符返回其最后一个操作数。如果你想在>>计算你想要分配的值之后执行某些,它将无法工作,例如。
$rand1_1 = ($request['txt_1'] != "") ? (mt_rand(100000, 999999), someFunction()) : '';
这会将$rand1_1
设置为someFunction()
返回的值,而不是随机值。您必须将随机值保存在变量中:
$rand1_1 = ($request['txt_1'] != "") ? ($temp = mt_rand(100000, 999999), someFunction(), $temp) : '';
所有这些额外的混乱使三元组真的难以阅读,否定了使用它而不是常规if
语句的价值。