PHP:为什么我的变量总是为真,永远不是假的?

时间:2016-03-11 18:07:38

标签: php

我是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。为什么呢?

谢谢!

2 个答案:

答案 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';
}