PHP - 比较两个变量
我有这样的代码PHP - 比较两个变量
<?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";
}
}
>
所以,我需要保存一个变量(其中i “这里的问题” 放)及以下比较,但是这个代码没? 't工作,我不知道为什么
我会建议使用比较字符串引用: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;
}
如果你期望$hello
在页面加载之间生存,你运气不好。
相反,您需要自行保留sessions之间的变量。
顺便说一句,行$hello;
不会做任何事情。
编辑我假设你需要会话的原因是,你设置$hello
只有当$campo == "newPassword"
,然后再期望它是有一定价值,只有当$campo == "passwordMatch"
。你永远不会改变$campo
的价值,显然它不可能是两者兼而有之。这意味着这两部分逻辑将在单独的页面加载上运行。
我想要的是用户执行新注册表时的简单比较。 – anvd 2011-03-15 19:45:51
@Fel:什么是“新注册表”?当你不知道它是什么时,你如何知道你所需的解决方案是“简单”的?请按照上面的建议阅读会议,然后决定是否在代码中需要这些内容。另请参阅我的编辑。 – 2011-03-15 19:50:42
取代你的代码看起来就像你在这里有一个语法问题:
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
缺少开幕{
并关闭}
。
ALSO
对于字符串比较,你应该使用===
,而不是一个数值==
详情请看这里:
我有同样的问题,原来是空白的,我用trim($myVar);
来修复。
定义“这段代码没有工作”。 – 2011-03-15 19:40:23
谨慎展开“没有工作” – 2011-03-15 19:40:33
你看到了什么样的问题? '$ hello'是一个空字符串,还是你得到了PHP异常/错误?尝试'var_dump($ _ GET);'以确保您在接收数据时,如果问题是'$ hello'为空。 – William 2011-03-15 19:40:54