PHP中的函数可以有多个返回值类型吗?

时间:2011-11-28 19:26:44

标签: php function return

有没有办法让我的PHP函数返回不同的值类型?以下代码应该解释我的意思:

<?php
public function test($value){
    if($value == 1){
        return "SUCCESS";
    } else {
        return false;
    }
}
?>

在一个条件下我返回一个字符串,否则我返回一个布尔值。是允许/可能吗?

6 个答案:

答案 0 :(得分:14)

是。 PHP是松散类型的,因此任何变量都可以采用任何类型。函数返回值也不例外。

答案 1 :(得分:3)

是的,这是可能的(但不可取)。

你至少应该在你的Javadoc评论中声明它

/**
 * @param int $value
 * @return mixed string|boolean
 **/
public function test($value){
    if($value == 1){
        return "SUCCESS";
    } else {
        return false;
    }
}

甚至PHP的内置函数有时会这样做(例如mysql_connect =&gt; boolean | resource link)

答案 2 :(得分:0)

是的,那是允许的,而不是像C,Java,......,你必须定义回报..

答案 3 :(得分:0)

允许。但是,在您提供的情况下,这是不可取的。对于有意义的示例,请查看例如strpos()功能。

答案 4 :(得分:0)

我自己也在想这个,为什么要回报一些与众不同的东西?那么接收端有两件事要检查?我想我已经决定返回一个空类型的类型或一个带有状态元素的数组。

两个例子,一个函数/方法中的事情如何变化,你基本上被迫检查超过预期:

<?php
function test($value){
if($value == 1){
    $local = successFunction($value);
    return $local;
} else {
    return false;
}
}

$res = test(1);
if ($res) {
   echo "We are OK ?  Right? No? What is this?";
}

第2版

function test($value){
if($value == 1){
    $local = successFunction($value);
    return $local;
} else {
    return "";
}
}

$res = test(1);
   if (!empty($res)) {
        echo "more likely we are ok";
    }
?>

答案 5 :(得分:-3)

  

允许/可能吗?

是的。