【问题标题】:Booleans not returning correctly布尔值未正确返回
【发布时间】:2013-09-11 03:29:58
【问题描述】:

我的任务是能够以某人的生日作为参数,并以这种特定方式返回年龄以及是否生日

getBirthDate('09/06/1992'); // 返回数组('age' => 21, 'birthday' => true);

我无法让布尔值正常工作,因为即使 if 语句为真,它也总是返回 else 语句。

<?php
function getBirthDate($birthdate)
{

$today =getdate();
$day =array($today["mon"], $today["mday"]);
$newBday = str_replace("/",",",$birthdate);
$birthDate = explode(",",$newBday);
$monthDay = array($birthDate["0"],$birthDate[1]);
$compared = array_diff($day,$monthDay);
if ($compared == ""){
    $age = ($today["year"]-$birthDate["2"]);

        $dateArray = array( "age" => "$age", "birthday" => "True");
        return print_r ($dateArray);
        return True;
}   
else{
    if ($monthDay[0] < $day[0]){
        $age = (($today["year"]-$birthDate["2"])-1);
        $dateArray = array( "age" => "$age", "birthday" => "False");
        return print_r($dataArray);
        return True;

                             }
    else{
        $age = (($today["year"]-$birthDate["2"]));
        $dateArray = array( "age" => "$age", "birthday" => "False");
        return print_r($dateArray);
        return True;

    }
}       
}
getBirthDate("9/6/1993")
?>

【问题讨论】:

  • 你为什么要一个接一个地使用双returns?!当 return 代码被执行时,php 将停止执行函数的其余部分。
  • 看,你被否决了,因为你没有解释你需要什么帮助。
  • 不,因为这个问题既不是问题也不是可理解的陈述。
  • 对不起,我没有意识到我把它剪短了。我对其进行了编辑以进行更多解释。

标签: php arrays if-statement


【解决方案1】:

对于开始,不要使用 True 和 False,或 TRUE 和 FALSE。

其次,您的 return True 行从未出现过,因为您正在返回一个值。 Return 从字面上看会在 return 语句处停止您的脚本。

return True;

应该是

return true;

此外,检查布尔值时始终使用 === 运算符而不是 ==。任何非零值都可以等同于真。

$true = true;

if ($true === true) {
    echo 'Yes! I got a true boolean result';
}

【讨论】:

  • 我按照你说的做了,但 if 语句仍然没有正确处理
猜你喜欢
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 2018-08-11
  • 2013-09-15
  • 1970-01-01
相关资源
最近更新 更多