【发布时间】:2011-08-06 21:48:22
【问题描述】:
请有人向我解释为什么这不起作用,以及我做错了什么。出于某种原因,当我运行函数validateUsername 时,$error 变量保持完全不变,而不是评估为true。这怎么可能?
然而,如果我删除函数中的代码并直接运行它而不调用函数,它就可以工作。下面的示例非常简单,实际上是伪代码,但它不起作用。这种行为是 PHP 独有的吗?我不想再用其他语言遇到这个问题。
<?php
$username = 'danielcarvalho';
$error = false;
function validateUsername()
{
if (strlen($username) > 10)
{
$error = true;
}
}
validateUsername();
if ($error == false)
{
echo 'Success.';
}
else
{
echo 'Failure.';
}
?>
【问题讨论】:
-
除了变量作用域,还要阅读函数的返回值
-
它只是在同一页面上的一个函数中,这肯定不会是变量范围的问题吗?猜我错了我会读的。