strcmp在PHP中无法正常工作

时间:2014-08-20 08:27:52

标签: php

我在php文件中设置一个会话变量:

$_SESSION['PageFrom']="check_login_test.php";

稍后通过表单和帖子将控件转移到另一个php文件。第二个文件中的相关代码是:

session_start();
$from=trim($_SESSION['PageFrom']);
pageFrom("check_login_test.php",$from);
die('I came here');

现在pageFrom是一个应该比较字符串的函数,并且这样说。原来的功能只是

function oldPageFrom($page,$from)
{
  $page= trim($page);
  $from=trim($from);
  if (strcmp($page,$from)!==0)
   {
      echo 'The pages are not same';
   }
}

由于它没有按预期工作,我试图尽可能多地调试它并输出(这改变了旧函数,但现在揭示了一些有趣的东西)。功能是

function pageFrom($page,$from)
{
 echo '<br/>$page='.$page;
 echo '<br/>$from='.$from;
 $m=trim($page);
 $n=trim($from);
 echo "<br/>TrimmedPage=$m<br/>TrimmedFrom=$n";
 $k= strcmp($m,$n);
 echo '$k='.$k;
 if($k !==0);
   {

     $i=strlen($from);
     $j=strlen($page);
        if ($i==$j)
            {
             echo "<br/>The string lengths are Equal $i=$j";
             die('Equal in unequal');
            }
        else
            {
              echo "<br/>The string lengths are UnEqual $i<>$j";
              die('UnEqual in unequal');
            }

  }

 echo 'Works as expected. They are equal'; die('equal');
 }

奇怪的是我得到以下输出:


$页= check_login_test.php
从$ = check_login_test.php
TrimmedPage = check_login_test.php
TrimmedFrom = check_login_test.php $ K = 0
字符串长度为等于20 = 20等于不等

所以问题是: (1)我修剪了琴弦。它们是相同的,长度相同。 Strcmp返回0.那么为什么它进入循环if($ k!== 0)呢?注意:($ k!= 0)也没有运气。

1 个答案:

答案 0 :(得分:2)

您正在使用以下代码:

if($k !==0);
   {

分号(;)终止if子句,随后的{ }块不会产生任何影响。移除;之后的if,它将按预期工作,即下面的代码

if($k !==0)
   {