Php 带有2个条件的If语句
我在练习陈述时遇到了一个问题。我试图让它这样做,如果Php 带有2个条件的If语句,php,if-statement,Php,If Statement,我在练习陈述时遇到了一个问题。我试图让它这样做,如果$child3可用,那么它将回送所有三个孩子,就像$child2可用时,它将回送s Kim&Pom。我做错了什么 $child = "Kim"; $child2 = "Pom"; $child3 = "Rob"; if($child2) { echo $child; echo " "; echo $child2; } elseif($child3) { echo $child; echo " "; echo $child2;
$child3
可用,那么它将回送所有三个孩子,就像$child2
可用时,它将回送s Kim&Pom。我做错了什么
$child = "Kim";
$child2 = "Pom";
$child3 = "Rob";
if($child2) {
echo $child; echo " "; echo $child2;
} elseif($child3) {
echo $child; echo " "; echo $child2; echo " "; echo $child3;
} else {
echo $child;
}
elseif
仅在前面的if
s或elseif
s均未执行时执行。因此,如果
,您需要将其移动到另一个的上方:
if($child3) {
echo $child; echo " "; echo $child2; echo " "; echo $child3;
} elseif($child2) {
echo $child; echo " "; echo $child2;
} else {
echo $child;
}
elseif
仅在前面的if
s或elseif
s均未执行时执行。因此,如果
,您需要将其移动到另一个的上方:
if($child3) {
echo $child; echo " "; echo $child2; echo " "; echo $child3;
} elseif($child2) {
echo $child; echo " "; echo $child2;
} else {
echo $child;
}
尝试反转条件:
$child = "Kim";
$child2 = "Pom";
$child3 = "Rob";
if($child3){
echo $child . " " . $child2 . " " . $child3;
}else if($child2){
echo $child . " " . $child2;
}else{
echo $child;
}
您可能还喜欢奇妙的字符串串联运算符
尝试反转条件:
$child = "Kim";
$child2 = "Pom";
$child3 = "Rob";
if($child3){
echo $child . " " . $child2 . " " . $child3;
}else if($child2){
echo $child . " " . $child2;
}else{
echo $child;
}
$child = "Kim";
$child2 = "Pom";
$child3 = "Rob";
if($child3){
echo $child; echo " "; echo $child2; echo " "; echo $child3;
}elseif($child2){
echo $child; echo " "; echo $child2;
}else{
echo $child;
}
您可能还喜欢奇妙的字符串串联运算符
如果这是您的实际代码,您将只得到Kim Rob
,因为$child2
将始终是true
,从而绕过else
子句
$child = "Kim";
$child2 = "Pom";
$child3 = "Rob";
if($child3){
echo $child; echo " "; echo $child2; echo " "; echo $child3;
}elseif($child2){
echo $child; echo " "; echo $child2;
}else{
echo $child;
}
此外,您还可以将echo
s组合成:
echo "$child $child2 $child3";
这样读起来容易多了。如果这是你的实际代码,你只会得到Kim Rob
,因为$child2
总是true
,从而绕过else
子句
此外,您还可以将echo
s组合成:
echo "$child $child2 $child3";
这样读起来容易多了。这个怎么样
if ($child) {
echo "{$child} ";
}
if ($child2) {
echo "{$child2} ";
}
if ($child3) {
echo "{$child3} ";
}
这个怎么样
if ($child) {
echo "{$child} ";
}
if ($child2) {
echo "{$child2} ";
}
if ($child3) {
echo "{$child3} ";
}
也许你想要这样的东西:
$child = 1; // Or $child = 2; Or $child = 3;
if ($child == 1) {
echo 'Kim';
} elseif ($child == 2) {
echo 'Pom';
} else {
echo 'Rob';
}
但我建议您在拥有elseif
后尽快使用switch()
$child = 1; // Or $child = 2; Or $child = 3;
if ($child == 1) {
echo 'Kim';
} elseif ($child == 2) {
echo 'Pom';
} else {
echo 'Rob';
}
但我建议您在拥有elseif
后尽快使用switch()
。我同意Dragon的观点,转换会更清晰/更好
switch (true)
{
case (isset($child,$child2,$child3)) :
echo $child . ' ' . $child2 . ' ' . $child3;
break;
case (isset($child, $child2)) :
echo $child . ' ' . $child2;
break;
case (isset($child)) :
echo $child;
break;
}
我会这样做的。我同意Dragon的观点,转换会更清晰/更好
switch (true)
{
case (isset($child,$child2,$child3)) :
echo $child . ' ' . $child2 . ' ' . $child3;
break;
case (isset($child, $child2)) :
echo $child . ' ' . $child2;
break;
case (isset($child)) :
echo $child;
break;
}
你能更清楚、更全面地描述你想要的行为吗?你正在使用If-Else If块。因此,如果满足第一个条件($child2),它将跳过代码的其余部分。如果要检查每个条件,需要三个If块,否则ifswitch\case会更容易、更清晰。@Dagon:如何切换三个不同的变量?我怀疑它会变得更清晰。@Dagon:根据命令,它肯定不会变得更清晰。但我不认为这是重点。。。否则,数组肯定是最好的解决方案。你能更清楚、更全面地描述你想要的行为吗?你正在使用If-Else If块。因此,如果满足第一个条件($child2),它将跳过代码的其余部分。如果要检查每个条件,需要三个If块,否则ifswitch\case会更容易、更清晰。@Dagon:如何切换三个不同的变量?我怀疑它会变得更清晰。@Dagon:根据命令,它肯定不会变得更清晰。但我不认为这是重点。。。否则,数组肯定是最好的解决方案。它还会产生一系列警告。什么警告?变量插值已经成为PHP的一部分至少有十年了。如果未定义$child3,并且您在运行PHP时附带E_通知,您将在输出中得到警告。OP的代码不会产生此类错误,他用“if”检查变量是否已定义,您不会。我没有编写完整的解决方案。我只是想指出OP逻辑上的缺陷。我很清楚检查一个变量是否包含一个值的必要性,并且会产生一系列警告。什么警告?变量插值已经成为PHP的一部分至少有十年了。如果未定义$child3,并且您在运行PHP时附带E_通知,您将在输出中得到警告。OP的代码不会产生此类错误,他用“if”检查变量是否已定义,您不会。我没有编写完整的解决方案。我只是想指出OP逻辑上的缺陷。顺便说一下,我很清楚检查一个变量是否包含一个值<代码> ELSIV/EXEC>是有效的必要性。顺便说一下,我也会考虑使用<代码>开关< /C>语句。要么把孩子放在一个数组和循环中,使用<代码>前缀 >代码> ELSIF < /COD>在PHP中是有效的,顺便说一下,我也会考虑使用<代码>开关语句。或者使用foreach
将子元素放入数组和循环中,这很可能是他真正想要做的事情,尽管问题还不清楚。你是说${child}还是真的{$child},为什么不仅仅是$child?@Milanbauškov我想他想要显示所有定义的值.我的意思是:为什么要用花括号?{}@MilanBabuškov我总是使用卷曲语法。有关更多信息,请查看此处。当然,在这个例子中,变量可以不用花括号来使用。这很可能是他真正想要做的,尽管问题还不清楚。你是指${child}还是真的{$child},为什么不只是$child?@Milanbauškov我想他想要显示所有定义的值.我的意思是:为什么要用花括号?{}@MilanBabuškov我总是使用卷曲语法。有关更多信息,请查看此处。当然,在这个例子中,变量可以不用花括号来使用,这是错误的。假设只定义了$child,它仍将尝试在第二个“case”中回显$child2和$child3。您将丢失)。试着运行代码,我明白你的意思。我不想到处乱扔通告。我已经修好了,这是错误的。假设只定义了$child,它仍将尝试在第二个“case”中回显$child2和$child3。您将丢失)。试着运行代码,我明白你的意思。我不想到处乱扔通告。我已经修好了。