我是PHP的新手,从事学校作业。我只是尝试使用函数设置一个布尔变量。但是使用以下代码:
$alreadyExists = idExists($id);
if($alreadyExists) {
print 'value was true';
} else {
print 'value was false';
}
...other code...
function idExists($id)
{
return false;
}
它始终打印"值是真的"。我试过制作函数"返回true","返回false",我的实际功能代码等。无论我的函数说什么,变量总是设置为true。为什么呢?
谢谢!
答案 0 :(得分:2)
您需要返回$id
而不是布尔值true|false
。你的条件语句会处理这个问题,并返回值是真还是假,就像你已经在打印中一样。
$id = 1; // wherever that's coming from.
$alreadyExists = idExists($id);
if($alreadyExists) {
print 'value was true';
} else {
print 'value was false';
}
// ...other code...
function idExists($id)
{
return $id;
}
您在回程中检查true / false将始终是那样。
如果$id
不存在,则会返回false。
以下注释$id
将返回false。
// $id = 1;
$alreadyExists = idExists($id);
if($alreadyExists) {
print 'value was true';
} else {
print 'value was false';
}
// ...other code...
function idExists($id)
{
return $id;
}
答案 1 :(得分:0)
这里最大的问题是这个功能
function idExists($id)
{
return false;
}
无论$id
此函数返回false的值是什么,为什么要传递变量$id
?
即使您修复此功能,其他事情也可能导致问题
您在此代码中看到,就在这里,
$alreadyExists = idExists($id);
函数idExists()
在读取时立即执行(即首先读取的第一行首先执行$idExists
执行一次,而上帝知道$id
值是什么),现在变量{{1已设置( SET !! ),只是因为您已将该变量分配给函数$alreadyExists
的返回值并不代表idExists()
$alreadyExists
函数被神奇地执行。无论你访问$idExists()
多少次,它的值都保持不变,除非被赋值运算符或其他东西修改。
除非此代码存在于使用更新值$alreadyExists
调用的函数中,否则您的$id
变量值将保持不变。
$alreadyExists
我实际上将其修改为这样,因为您在此范围内仅使用$ alreadyExists
$alreadyExists = idExists($id);
if($alreadyExists) {
print 'value was true';
} else {
print 'value was false';
}