第一个循环在$ cnt = 3时执行,另一个在$ cnt = 3之外执行。无论$ cnt的值是什么,只有第一个循环执行,无论是$ cnt = 3还是$ cnt == 3.
$ary = explode(".", $string);
$cnt = count($ary);
if ($cnt="3") {
//executes when cnt=3
$fnm = $d[0];
$fnxt = $d[1].".".$d[2];
} else {
//executes when anything other than when cnt=3
$fnm = $d[0];
$fnxt = $d[1];
}
我可能会在这里遗漏一些东西,这里到底出了什么问题?
由于 让
答案 0 :(得分:5)
您在比较中遗漏了=
个符号。它应该是:
if ($cnt == 3)
实际上,您将 3分配给$cnt
,并且由于赋值运算符返回其值,因此测试变为if (3)
,这当然总是成功。
注意:count()
会返回一个整数,这就是我上面的版本与3
而非"3"
答案 1 :(得分:5)
您缺少“=”
if ($cnt="3") { // This is an assignment, which returns true.
这应该是:
if ($cnt == "3") { // This is a comparison.
答案 2 :(得分:1)
$cnt="3"
将值"3"
分配给$cnt
,整个表达式的计算结果为"3"
,这是真的,这会导致if
块总是被执行。为了测试$cnt
是否等于"3"
,请使用==
运算符:$cnt == "3"
。