php 双 if 语句
php double if statement
我刚开始学习如何编程。我想知道最好的方法是什么来处理你有一个双 if 语句的问题,两者都有相同的 Else 结果。
以下面的双if语句为例。
if (isset($x)) {
$y = doSomething($x);
if ($y == "something") {
do result A;
}
else {
do result B;
}
}
else {
do result B;
}
多次写入结果B似乎不是一个聪明的主意。
现在有哪些不同的方法可以防止多次写入结果 B?
可以尝试组合 1 个 if 语句,但这似乎并不总是可行的(例如,在使用 isset() 检查变量是否存在时)。
if (isset($x) && $y) { etc. }
还有哪些其他选择?
PS。我也愿意接受其他建议来帮助改进我的代码,比如如何以更好的方式编写 if(isset($x))。
if (isset($x) && doSomething($x) == 'something') {
// do result A;
}
else {
// do result B;
}
重要提示:只有当 isset($x)
的计算结果为真时,才会计算 doSomething($x)
。否则直接中止条件检查,执行else分支。因此,如果未设置 $x
,您不必担心 doSomething($x)
会产生任何副作用。
我不确定这是否是记录在案的行为,但可以通过以下方式检查:
<?php
function checkSomething() {
echo "Look, I'm checking something!\n";
return true;
}
if (1 == 0 && checkSomething()) {
echo "if\n";
} else {
echo "else\n";
}
输出:
else
如果检查 checkSomething()
,它会输出 if
以及 checkSomething()
中的 echo
。
if (isset($x) && doSomething($x) == "something") {
do result A;
}
else {
do result B;
}
或
$successful = false;
if (isset($x)) {
$y = doSomething($x);
if ($y == "something") {
$successful = true;
}
}
if ($successful) {
do result A;
} else {
do result B;
}
您可能想使用三元运算符来设置 $y
。
$y = (isset($x)) ? doSomething($x) : "some_other_value";
if ($y == "something")
{
do result A;
}
else
{
do result B;
}
如果设置了 $x
,则它将 doSomething($x)
返回的值放入 $y
,否则您指定的其他值。然后,您对 $y
.
的值执行一次 if 语句
谢谢大家的帮助。
我发现以下是解决此问题的最简单、最清晰的方法。现在结果 B 只写了一次而不是多次。尤其是当结果 B 变长时,这会使其易于阅读。
$failure = false;
if (isset($x)) {
$y = doSomething($x);
if ($y == "something") {
do result A;
} else {
$failure = true;
}
} else {
$failure = true;
}
if ($failure == true) {
do result B;
}
我刚开始学习如何编程。我想知道最好的方法是什么来处理你有一个双 if 语句的问题,两者都有相同的 Else 结果。
以下面的双if语句为例。
if (isset($x)) {
$y = doSomething($x);
if ($y == "something") {
do result A;
}
else {
do result B;
}
}
else {
do result B;
}
多次写入结果B似乎不是一个聪明的主意。 现在有哪些不同的方法可以防止多次写入结果 B?
可以尝试组合 1 个 if 语句,但这似乎并不总是可行的(例如,在使用 isset() 检查变量是否存在时)。
if (isset($x) && $y) { etc. }
还有哪些其他选择?
PS。我也愿意接受其他建议来帮助改进我的代码,比如如何以更好的方式编写 if(isset($x))。
if (isset($x) && doSomething($x) == 'something') {
// do result A;
}
else {
// do result B;
}
重要提示:只有当 isset($x)
的计算结果为真时,才会计算 doSomething($x)
。否则直接中止条件检查,执行else分支。因此,如果未设置 $x
,您不必担心 doSomething($x)
会产生任何副作用。
我不确定这是否是记录在案的行为,但可以通过以下方式检查:
<?php
function checkSomething() {
echo "Look, I'm checking something!\n";
return true;
}
if (1 == 0 && checkSomething()) {
echo "if\n";
} else {
echo "else\n";
}
输出:
else
如果检查 checkSomething()
,它会输出 if
以及 checkSomething()
中的 echo
。
if (isset($x) && doSomething($x) == "something") {
do result A;
}
else {
do result B;
}
或
$successful = false;
if (isset($x)) {
$y = doSomething($x);
if ($y == "something") {
$successful = true;
}
}
if ($successful) {
do result A;
} else {
do result B;
}
您可能想使用三元运算符来设置 $y
。
$y = (isset($x)) ? doSomething($x) : "some_other_value";
if ($y == "something")
{
do result A;
}
else
{
do result B;
}
如果设置了 $x
,则它将 doSomething($x)
返回的值放入 $y
,否则您指定的其他值。然后,您对 $y
.
谢谢大家的帮助。
我发现以下是解决此问题的最简单、最清晰的方法。现在结果 B 只写了一次而不是多次。尤其是当结果 B 变长时,这会使其易于阅读。
$failure = false;
if (isset($x)) {
$y = doSomething($x);
if ($y == "something") {
do result A;
} else {
$failure = true;
}
} else {
$failure = true;
}
if ($failure == true) {
do result B;
}