我得到了以下代码,是否可以将else条件作为三元组来执行:
if (condition) {
//do something
} else {
if (isset($_POST['A'])) {
header("Location: /LocationA");
exit;
}
if (isset($_POST['B'])) {
header("Location: /LocationB");
exit;
}
}
我尝试过以下操作,但我不确定我是否正确:
isset($_POST['A']) ? header("Location: /LocationA")
: header("Location: /LocationB}");
exit;
我只需要在声明中更改ELSE。所以它会像:
if (condition) {
//do something
} else {
//ternary
}
答案 0 :(得分:5)
但我不确定我是否正确
你不对。
ternary operator(?:
)是一名运营商。正如the documentation所说:
运算符是一个接受一个或多个值(或编程术语中的表达式)并产生另一个值(以便构造本身成为表达式)的东西。
请注意单词"值"和"表达"在上面的句子中。
PHP函数header()
没有返回任何内容。调用header(...)
没有值,只有副作用(它会修改程序的状态)。
您正尝试将if
statement替换为运算符。它们是不同的东西,在语言中有不同的用途,遵循不同的规则。换一个是不起作用。
您发布的表达方式:
isset($_POST['A']) ? header("Location: /LocationA")
: header("Location: /LocationB}");
与您尝试替换的if
语句具有相同的效果。
原始代码片段中有一个if (isset($_POST['B']))
在重写的代码中缺失。
不关心$_POST['B']
,您可以编写如下代码:
if (condition) {
//do something
} else {
header(isset($_POST['A'] ? 'Location: /LocationA' : 'Location: /LocationB');
exit();
}
或者,甚至更短:
header('Location: ' . (isset($_POST['A']) ? '/LocationA' : '/LocationB'));
答案 1 :(得分:0)
试试吧
isset($_POST['A'])
?
header("Location: /LocationA");
:
header("Location: /LocationB");
exit;
我认为它有效。 :)