Php 最后一条if语句的计算结果是否始终为true(覆盖)?
我试图显示一个基于等级变化的图像。如果数组Php 最后一条if语句的计算结果是否始终为true(覆盖)?,php,Php,我试图显示一个基于等级变化的图像。如果数组$rank\u change的值在我的If语句之前被回显,则会打印正确的值,例如: 0, 0, 0, 0, 0, 0, 0, -7, 1, 1, 1, 1, 1, 1, 1 但是,如果在以下if语句之后打印,side.gif始终显示: if($rank_change[$i] > 0) { $rank_change[$i] = "<img src=\"up.gif\" width=\"16\" height=\"16\"/>"; }
$rank\u change
的值在我的If语句之前被回显,则会打印正确的值,例如:
0, 0, 0, 0, 0, 0, 0, -7, 1, 1, 1, 1, 1, 1, 1
但是,如果在以下if语句之后打印,side.gif
始终显示:
if($rank_change[$i] > 0) { $rank_change[$i] = "<img src=\"up.gif\" width=\"16\" height=\"16\"/>"; }
if($rank_change[$i] < 0) { $rank_change[$i] = "<img src=\"down.gif\" width=\"16\" height=\"16\"/>"; }
if($rank_change[$i] == 0) { $rank_change[$i] = "<img src=\"side.gif\" width=\"16\" height=\"16\"/>";}
if($rank\u change[$i]>0){$rank\u change[$i]='';}
如果($rank_change[$i]<0){$rank_change[$i]='';}
如果($rank_change[$i]==0){$rank_change[$i]='';}
在$rank\u change
的值为7和1的情况下,为什么最后一条语句的计算结果仍然为true
我意识到使用switch($rank\u change[$I])
会更有效,但我仍然不明白为什么最后的if语句对所有值都求值为true
任何帮助都将不胜感激 对于最后两个条件,使用else if而不是简单if 实际上,您正在覆盖每个测试后表达式中的
$rank\u change[$i]
中的值$rank\u change[$i]=“
将更改$rank\u change[$i]
的值,这将使以下测试之一也返回true,从而导致$rank\u change[$i]
的值发生另一次更改
使用
else if
构造,只有一个测试会成功。对于最后两个条件,使用else if而不是简单的if
实际上,您正在覆盖每个测试后表达式中的$rank\u change[$i]
中的值$rank\u change[$i]=“
将更改$rank\u change[$i]
的值,这将使以下测试之一也返回true,从而导致$rank\u change[$i]
的值发生另一次更改
使用
else if
构造,只有一个测试会成功。Adrien是正确的,您应该使用if-else语句。最后一个条件是求值为true,因为php正在对您的值执行某种类型强制
有关何时/如何执行此操作的更多信息,请参见(特别是类型比较表)
基本上,它正在将
'derp'==0
更改为(int)'derp'==0
(int)'derp'
为0。Adrien是正确的,您应该使用if-else语句。最后一个条件是求值为true,因为php正在对您的值执行某种类型强制
有关何时/如何执行此操作的更多信息,请参见(特别是类型比较表)
基本上,它正在将
'derp'==0
更改为(int)'derp'==0
(int)'derp'
是0。可能是因为比较“any string”==0
在PHP中的计算结果是true
?我会尝试一下,但我仍然不明白为什么最后一个总是会被触发,因为如果满足条件,则语句仅用于计算true
,否则就被忽略了,不是吗?啊,很好的解释!我没有想到这一点。完成,当然,工作:)。计时器一停,我就接受你的回答“any string”==0
在php中计算为true
:比较字符串和整数时,php将首先尝试将字符串转换为整数。但是“any string”
不表示任何整数值,因此php假定其为0。(我讨厌这种讨厌的字符串到整数转换的语言)。这就是解释。因为,据推测,在PHP中,比较“any string”==0
的计算结果为true
?我会尝试一下,但我仍然不明白为什么最后一个总是会被绊倒,因为如果语句只有在满足条件的情况下才要计算true
,否则就会被忽略-不是这样吗?啊,很好的解释!我没有想到这一点。完成,当然,工作:)。计时器一停,我就接受你的回答“any string”==0
在php中计算为true
:比较字符串和整数时,php将首先尝试将字符串转换为整数。但是“any string”
不表示任何整数值,因此php假定其为0。(我讨厌这种讨厌的字符串到整数转换的语言)。这就是解释。