我需要在函数中返回true和false吗?

时间:2013-11-21 13:24:16

标签: php function return

我是否需要在php中的函数中提供真假返回,或者只是一个真正的回归?

如果我有这样的小功能:

<?php
$name =  $_POST['name'];

function nameCheck($name)
{
if (strlen($name)>1 && strlen($name)<40)
{
    return true;
}   
    else
    {
        return false; // do I need this?
    }
}

然后我在这里检查它是否是假的:

if (isset($_POST['submit']))
{
    if (!nameCheck($name))
    {
        echo '<script type="text/javascript"> alert("Fail name!")</script>';
        return false;
    }
}
?>

if (!nameCheck($name))我不需要在原始函数中返回一个真值,好像它在这里没有返回true,它会返回false吗?

2 个答案:

答案 0 :(得分:7)

你实际上没有需要来返回两者,因为如果null转换为布尔值,php会将false解释为if,就像你一样在这里干嘛

那就是说,在这种情况下,你可以明确地说明它并返回两者。如果你这样做,你可以编写更多更清洁的功能:

 function nameCheck($name)
 {
     return strlen($name) > 1 && strlen($name) < 40;
 }

strlen($name) > 1 && strlen($name) < 40的值为boolean即:答案为 true false 。所以,我们只需要简单地返回这个计算的输出......

让我们思考一下机器将如何处理这段代码:

if(2>1) return true;

它首先要做的是计算括号:

if(true) return true;

考虑到这一点,我们可以简单地说:

return 2>1;

在上面的函数中使用了相同的逻辑

答案 1 :(得分:3)

PHP不是typed language,因此它不会强制您返回值(例如,当参数满足条件时,您只能返回true

但是,如评论中所述,这是一个坏主意,因为当您尝试访问return值(或不需要的值)时它将为null

认为它是typed language:您的函数会返回boolean,并且您将被迫返回truefalse,具体取决于条件。所以你的第一个例子很好,你应该保持这种语法;您可以通过默认返回false使其变亮,并仅使用条件返回true

function nameCheck( $name ) {
    if( strlen( $name ) > 1 && strlen( $name ) < 40 ) { 
        return true;
    }   

    return false;
}

编辑:cronoklee's answer也是重构代码的好方法