2017-08-08 127 views
-4

我希望能够执行下面的操作,但无法执行,因为值不会传递到下一个if语句。通过嵌套的if()语句传递变量值 - PHP

if(something){ 
    $x=SomeValue; 
    if(something){ 
     $y=SomeValue; 
     if($x==$y){ 
     echo"x & y matches"; 
     } 
    } 
} 

我也是在各自if语句试图$GLOBALS但仍然无法正常工作。

如何传递的$x & $y值到第三if()声明

实际代码

if($i%2) { 
     $dx1 = $row['sec1']; 
     echo $dx1; 
     if($i%2==0){ 
      $dx2 = $row['sec2']; 
      echo $dx2; 
      if($dx1==$dx2){echo $dx1." do not match ".$dx2;} 
     } 
    } 
} 
+1

你在什么条件下(你的代码中的“something”)?听起来就像你的问题所在。 – Qirel

+0

你一定在做错事。如图所示,无论您为$ x和$ y设置的值将在整个代码中绝对可用。也许向我们展示实际的代码而不是这个? –

+0

@Qirel条件可以是任何事情,如果遇到“回声”可以检查 – X10nD

回答

4

在PHP中,这是 “空” 被认为是“任意值truthy“;在整数的情况下,这意味着0是错误的,而其他所有内容都是正确的。所以if($i%2)的含义与if($i % 2 != 0)相同。

后来,你巢if一个外观类似的情况,if($i%2==0),这实际上是完全相反。要达到内部if,您必须首先进入外部if,所以两个条件都必须是真实的才能达到最内层的代码。

正如你所说,条件相当于“$我是奇数”和“$我是偶数”。要进入第一条if语句,$i必须是奇数;但要进入第二个,它必须也是是偶数。 $i没有值满足这两个条件,所以永远不会达到最内层的代码。

+0

如果if()fire,则$ dx1或$ dx2中的任何一个必须在第三个if中回显? – X10nD

+1

@ X10nD不,你不能达到第二个“if”,除非第一个“if”的结果为真。如果'$ i'是偶数,则整个代码块将被第一个“if”跳过。 – IMSoP