返回多个值:返回数组与更改引用参数

时间:2016-08-05 16:34:39

标签: php arrays parameters reference return

当我需要返回多个值作为我的函数的结果时(例如,让我们说一个布尔说明特定操作是否成功,以及一条消息说明错误或成功消息),我应该返回那些数组中的多个值,或者通过使函数参数成为引用并更改它们的值?

function myFunction($input){
    ...
    return array("success" => true/false, "message" => "Internal Error"/"Success");
}

或者

function myFunction($input, &$success, &$message){
    ...
    $success = true;
    $message = "It worked";
}

什么是最佳做法?我已经在各种代码库中看到过,即使是在其他语言中也是如此。

1 个答案:

答案 0 :(得分:-1)

这取决于您的用例以及最适合您的需求。可以使用这两种方法,而第二种方法由一些内置的PHP函数使用(例如exec)。如果您从一开始就不需要数组,因为您没有输出它(例如作为JSON),您应该使用引用,并且可能只返回truefalse,具体取决于成功完成或不。如果您曾经需要该消息,则可以使用您引用的变量。

function myFunction($input, &$return_message) {
    if($input ...) {
        $return_message = 'action 1 successfully';
        return true;
    } else {
        $return_message = 'invalid input';
    }

    return false;
}

$msg = "";
$action = myFunction(array('Hello'), $msg);
if($action === true) {
    echo 'Action completed!';
} else {
    die('Action not successfully, error message: '.$msg);
}