这是我的代码:
$oldPhone = $_POST["phone"];
$newPhone = makeInteger($oldPhone);
lengthMustBe($newPhone, 10, "Please enter a valid 10-digit phone number.");
这是功能:
function lengthMustBe($str, $length, $errormsg) {
if (strlen($str) != $length) {
$status = "failure";
$error = $errormsg;
}
};
这个功能非常自我解释..
当我尝试传递"123", 10, "Not long enough"
时,$状态仍然是"成功" (在页面顶部定义。)
答案 0 :(得分:2)
如何在页面顶部定义$ status?我的猜测是这个函数中$ status的范围使它成为与页面顶部定义的变量不同的变量。
答案 1 :(得分:2)
$status
var的范围在函数lengthMustBe。
您可以将$status
定义为全局变量,如下所示:
function lengthMustBe($str, $length, $errormsg) {
global $status;
// ...
答案 2 :(得分:2)
您需要设置$status
变量,如:
$tmpArray = lengthMustBe($newPhone, 10, "Please enter a valid 10-digit phone number.");
$status = $tmpArray[0];
$statusMsg = $tmpArray[1];
和你的职能:
function lengthMustBe($str, $length, $errormsg) {
if (strlen($str) != $length) {
return array("failure", $errormsg);
}
else
{
return array("success", "");
}
}
不要使用全局变量只是一个可怕的想法......
答案 3 :(得分:1)
我认为$ status不是全局的...意味着它只会在该函数中“失败”,但是当你尝试从其他地方调用它时,会调用全局$ status - 它被定义为“成功” “在页面顶部。