PHP三元运算符多语句
你好,我有一段代码:PHP三元运算符多语句,php,ternary-operator,Php,Ternary Operator,你好,我有一段代码: 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_!'] != "") { $ran
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 = '';
}
在三元运算符中可能吗?这是可能的,但它会使三元运算符的使用变得不那么有用,因为它会使它变得杂乱无章(特别是如果您想将它保持在一行上)。如果将其作为RHS放在表达式中,其返回值也将分配给
$randl1_1
如果someFunction()
返回了真实的内容,那么
$randl1_1 = ($request['txt_1'] != "") ? someFunction() && mt_rand(100000, 999999) : '';
如果没有,您可以使用| |
。但正如你所看到的,这是丑陋的。如果someFunction()
依赖于$randl1\u 1
,那么问题就更严重了。:)
在您的第二个案例中,我将使用您引用的更详细的示例。您希望您的代码能够清楚地与您自己和他人交流其意图
试图将所有内容硬塞进三元运算符是一种不好的做法。不能将多个语句放入三元运算符的参数中。您可以使用逗号运算符计算多个表达式,但:
$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
语句的价值。有可能,你能给出一个演示吗?你展示的示例与OP的最后一个代码块不同。在OP的代码中,函数不必返回任何东西,也不必将它或类似的东西与mt_rand()
调用连接起来。@Rizier123我意识到,这就是为什么我写了一些东西来描述它需要一些假设的原因。不管你用哪种方式,它都不会是好代码。我只是想告诉大家怎么做。@Rizier123是的,它正在工作,但我只是想问问是否有这样的事情:谢谢你,先生。如果不是这样的话,我会照常做的。最后我想到的答案是:)第一句话说明了一切!面向对象编程(Oops),与大多数其他以C为模式的语言不同,PHP没有逗号运算符。所以这个答案完全错了。