最佳做法:返回多个值

Ema*_*nas 6 php methods coding-style function code-standards

从纯编码最佳实践的角度来看,将推荐什么作为中型开发人员团队的标准?

返回一个顺序数组:

function get_results($filter) {
    $query = "SELECT SQL_CALC_FOUND_ROWS, * FROM ...";

    $results = ...
    $total = ...

    return array($results, $total);
}
Run Code Online (Sandbox Code Playgroud)

返回一个关联数组:

function get_results($filter) {
    $query = "SELECT SQL_CALC_FOUND_ROWS, * FROM ...";

    $results = ...
    $total = ...

    return array(
        'resuts' => $results, 
        'total' => $total
    );
}
Run Code Online (Sandbox Code Playgroud)

返回单个结果并通过引用分配第二个结果(?!):

function get_results($filter, &$count = null) {
    $query = "SELECT SQL_CALC_FOUND_ROWS, * FROM ...";

    $results = ...
    $total = ...

    $count = $total;
    return $results;
}
Run Code Online (Sandbox Code Playgroud)

随意建议其他方法。

pet*_*ltz 7

来自 PHP 文档:

一个函数不能返回多个值,但是通过返回一个数组可以获得类似的结果。

鉴于文档说明的内容,所有这些似乎都是很好的做法。文档中注释揭示了另一种方式:使用list(). 请参阅下面的示例:

function fn($a, $b)
{
   # complex stuff

    return array(
      $a * $b,
      $a + $b,
   );
}

list($product, $sum) = fn(3, 4);

echo $product; # prints 12
echo $sum; # prints 7
Run Code Online (Sandbox Code Playgroud)