Dan*_*lho 1 php boolean function
有人请向我解释为什么这不起作用,以及我做错了什么.出于某种原因,当我运行该函数时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.';
}
?>
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为$username在您的validateUsername功能范围内不可用.(也不是$error变量.)有关详细信息,请参阅PHP手册的变量范围部分.
你可以通过添加global $username, $error;你的函数来解决这个问题,虽然这不是一个特别优雅的方法,因为全局变量因为太详细的原因而被避开.因此,最好接受$username如下函数作为函数的参数:
<?php
function validateUsername($username) {
if (strlen($username) > 10) {
return false;
}
return true;
}
if (validateUsername('danielcarvalho')) {
echo 'Success.';
}
else {
echo 'Failure.';
}
?>
Run Code Online (Sandbox Code Playgroud)