Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP三元运算符多语句_Php_Ternary Operator - Fatal编程技术网

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没有逗号运算符。所以这个答案完全错了。