布尔人没有正确回归

时间:2013-09-06 22:58:37

标签: php arrays if-statement

我的任务是能够以某个人的生日为参数,并以此特定的方式返回那里的年龄以及是否有生日

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

我无法使布尔值正常工作,因为即使if语句为true,它总是返回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")
?>

1 个答案:

答案 0 :(得分:0)

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

其次,您的return True行永远不会看到光明,因为您正在返回它之前的值。返回字面意思是在返回语句处停止脚本。

return True;

应该是

return true;

另外,在检查布尔值时总是使用=== operator not =。任何非零值都可以等于true。

$true = true;

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