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

Php 返回多个值:返回数组与更改引用参数,php,arrays,parameters,reference,return,Php,Arrays,Parameters,Reference,Return,当我需要返回多个值作为函数的结果时(例如,一个布尔值表示特定操作是否成功,以及一条消息表示错误或成功消息),我应该在数组中返回这些多个值,还是将函数参数设为引用并更改其值 function myFunction($input){ ... return array("success" => true/false, "message" => "Internal Error"/"Success"); } 或 什么是最佳做法?我已经在各种代码库中看到了这两种代码,甚至在其他

当我需要返回多个值作为函数的结果时(例如,一个布尔值表示特定操作是否成功,以及一条消息表示错误或成功消息),我应该在数组中返回这些多个值,还是将函数参数设为引用并更改其值

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


什么是最佳做法?我已经在各种代码库中看到了这两种代码,甚至在其他语言中也看到了。

这实际上取决于您的用例和最适合您需要的代码。这两种方法都可以使用,而第二种方法由一些内置PHP函数使用(例如
exec
)。如果由于不输出数组(如JSON),所以从一开始就不需要数组,则应使用引用,并根据是否成功完成返回
true
false
。如果您曾经需要该消息,那么只需使用引用的变量即可

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);
}

为什么有人要使用flash消息变量作为参考?我对它不满意,所以我忽略了它。我看不出在操作成功时需要任何消息,因此您可以在成功时返回true,在失败时返回错误消息。@revo Using messages只是一个例子。(好吧,这是我一开始是如何得到这个问题的,但我也对其他类型的返回值的答案感兴趣)@CharlotteDunois我真的不喜欢根据发生的情况返回不同类型的返回值。感觉真的不对。如果函数返回数组,则应始终返回数组。如果它返回一个整数,它应该总是返回一个整数。等等此外,正如我在之前的评论中所说,信息只是一个例子:)@CharlotteDunois同样,在我的例子中,有多个成功的“案例”都伴随着一个特定的信息。(但同样,我对关于其他类型返回值的一般答案感兴趣)
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);
}