PHP - 比较两个变量

时间:2011-03-15 19:36:49

标签: php string compare

我有这段代码

<?php

ob_start();
header("Content-Type: text/html; charset=ISO-8859-1");

$campo = $_GET['campo'];
$valor = $_GET['valor'];
$hello;

    if ($campo == "myPassword") {
        if (!preg_match("/^\S{4,12}$/", $valor)) {
            echo "Tamanho entre 4 e 12 letras e sem espaços";
        }
        else 
            $hello = $valor; //problem here
            echo $hello;
    }

if ($campo == "passwordMatch") {
    if ($hello != $valor ) {
        echo "Passwords don't match";
    }
}

&GT;

所以,我需要保存一个变量(我把“问题放在这里”)并在下面比较,但这段代码不起作用,我不知道为什么

4 个答案:

答案 0 :(得分:1)

我建议用来比较字符串参考:http://php.net/manual/en/function.strcmp.php

if(strcmp($str1,$str2)):
endif;

if(!strcmp($str1,$str2)):
endif;

并用此

替换您的代码
if (!preg_match("/^\S{4,12}$/", $valor)) {
            echo "Tamanho entre 4 e 12 letras e sem espaços";
        }
        else {
            $hello = $valor; //problem here
            echo $hello;
       }

答案 1 :(得分:0)

如果您期望$hello在页面加载之间存活,那么您就不幸了。

相反,您需要在sessions之间保持变量。

BTW,第$hello;行没有做任何事情。

修改我之所以认为您需要会话的原因是您只在$hello时设置$campo == "newPassword",之后只会在{{{}}时期望它为某个值1}}。你永远不会改变$campo == "passwordMatch"的值,显然不能同时改变它们。这意味着这两个逻辑将在不同的页面加载上运行。

答案 2 :(得分:0)

在这里看起来有一个语法问题:

if ($campo == "myPassword") {
        if (!preg_match("/^\S{4,12}$/", $valor)) {
            echo "Tamanho entre 4 e 12 letras e sem espaços";
        } else {  // missing bracket
            $hello = $valor; //problem here
            echo $hello;
            } // missing bracket
    }

这是你的问题吗?您的ELSE错过了一个空缺{并关闭了}

同时

对于字符串比较,您应该使用===而不是数字==

详细信息如下:

答案 3 :(得分:0)

我遇到了同样的问题,原来是空格,我用trim($myVar);来修复。