这个PHP if循环应该是这里最奇怪的问题,但我确实想知道

时间:2011-05-08 20:35:25

标签: php

第一个循环在$ 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];
}

我可能会在这里遗漏一些东西,这里到底出了什么问题?

由于 让

3 个答案:

答案 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"