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
使用';和';和';或';在if/else PHP语句中_Php - Fatal编程技术网

使用';和';和';或';在if/else PHP语句中

使用';和';和';或';在if/else PHP语句中,php,Php,我试图在IF/ELSE语句中同时使用AND和OR语句,但无法达到预期效果 我想实现的是,如果'a'或'b'的值为'1',但'c'和'd'都必须为1,那么我得到'Yes' 我所有的尝试都给了我“是”或者没有成功(空白屏幕) 谢谢。为了确保正确完成评估顺序,您需要添加括号,如数学: if ( ( ($a == "1") || ($b == "1") ) && ($c == "1") && ($d == "1")) { ^

我试图在IF/ELSE语句中同时使用AND和OR语句,但无法达到预期效果

我想实现的是,如果'a'或'b'的值为'1',但'c'和'd'都必须为1,那么我得到'Yes'

我所有的尝试都给了我“是”或者没有成功(空白屏幕)



谢谢。

为了确保正确完成评估顺序,您需要添加括号,如数学:

if (  (  ($a == "1") || ($b == "1")  ) && ($c == "1") && ($d == "1")) {
      ^                              ^
这样的话,比如说:

$a = 1;
$b = 2;
$c = 1;
$d = 2;
第一个括号的计算结果为
true | | false
。最终结果将为
true

现在您有了
true&&($c==“1”)&&($d==“1”)

$c=1
,因此,下一次评估将是
true&&true&($d==1)


$d=2
,因此下一轮将是
true&&true&&false
,在本例中,最终结果将是
false
,您需要添加括号,以确保正确完成评估顺序,如数学:

if (  (  ($a == "1") || ($b == "1")  ) && ($c == "1") && ($d == "1")) {
      ^                              ^
这样的话,比如说:

$a = 1;
$b = 2;
$c = 1;
$d = 2;
第一个括号的计算结果为
true | | false
。最终结果将为
true

现在您有了
true&&($c==“1”)&&($d==“1”)

$c=1
,因此,下一次评估将是
true&&true&($d==1)


$d=2
,因此下一轮将是
true&&true&&false
,在本例中,最终结果将是
false

首先计算等式运算符,然后是&&&,然后是| |。括号的计算将先于任何其他内容,因此添加括号可以更改顺序


检查答案

将首先计算相等运算符,然后&&,然后| |。括号的计算将先于任何其他内容,因此添加括号可以更改顺序


检查答案

您需要添加括号

为什么?

因为先计算内括号,然后再计算外括号。举个例子:

((1==1&(2==2))| | 3==3)

首先评估什么?2==2,然后是1==1,然后是3==3。在你的if条件下,因为你混合了AND's和OR's,你不会得到想要的效果

(($a==“1”)|($b==“1”)&&($c==“1”)&($d==“1”))

应该对你有用。事实上,您可以这样做,使它看起来更好:

($a==1 | |$b==1)和&$c==1和&$d==1)

因为不必在引号中加1,即:
“1”
。PHP的真实性将评估
1==“1”
为真。但是,如果要检查包含1的实际字符串,则可以使用
=
运算符

$a = 1;
$b = "1"
$a == "1";  // true
$b == 1;    // true
$a === "1"; // false
$b === "1"; // true

但是,有关更多信息,请转到此处:

您需要添加括号

为什么?

因为先计算内括号,然后再计算外括号。举个例子:

((1==1&(2==2))| | 3==3)

首先评估什么?2==2,然后是1==1,然后是3==3。在你的if条件下,因为你混合了AND's和OR's,你不会得到想要的效果

(($a==“1”)|($b==“1”)&&($c==“1”)&($d==“1”))

应该对你有用。事实上,您可以这样做,使它看起来更好:

($a==1 | |$b==1)和&$c==1和&$d==1)

因为不必在引号中加1,即:
“1”
。PHP的真实性将评估
1==“1”
为真。但是,如果要检查包含1的实际字符串,则可以使用
=
运算符

$a = 1;
$b = "1"
$a == "1";  // true
$b == 1;    // true
$a === "1"; // false
$b === "1"; // true

但是,有关更多信息,请转到此处:

它将始终回显Yes,因为PHP解释器将AND操作放在OR操作之前

所以你的if语句解释如下:

If
a=1或b=1,c=1,d=1
然后
回音“是”
其他的
回显“否”


这就是为什么您总是得到一个yes..

它总是回显一个yes,因为PHP解释器将AND操作放在OR操作之前

所以你的if语句解释如下:

If
a=1或b=1,c=1,d=1
然后
回音“是”
其他的
回显“否”


这就是为什么你总是得到“是”的答案。

用括号的方法与数学中的方法相同。顺便说一句,等式表达式周围的括号其实并不需要。用括号的方法与数学中的方法相同。顺便说一句,等式表达式周围的括号其实并不需要。这就是问题所在!谢谢@Felippe将在允许的情况下接受答案(11分钟内!)这就是问题所在!谢谢@Felippe将在允许的情况下接受答案(11分钟内!)