如何创建具有多个返回值的 PHP 函数

Ralfh Bryan Perez 2023年1月30日 2020年3月28日 PHP PHP Function
  1. PHP array 返回多个值
  2. 带条件动态返回的 PHP 函数
  3. PHP 数组与条件动态返回值的结合
  4. PHP generatoryield 多个值
如何创建具有多个返回值的 PHP 函数

PHP 函数是一个可重复使用的语句块,它使我们可以返回简单的字符串,数组或 JSON 对象。但是不可能有一个以上的返回值。尽管可以使用数组,但是可以创建条件语句以返回动态变量或使用生成器*(对于 PHP 5.5 及更高版本)*。

PHP array 返回多个值

funtion arrayFunc(){
    $var1 = "return 1";
    $var2 = "return 2";
    
    return array($var1, $var2);
}

在应用中:

$result = arrayFunc();
var_dump($result);
//output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }

上面的函数可以具有数组形式的多个返回值,可以使用以下命令进行访问:

$result = arrayFunc();
echo $result[0]; // return 1
echo $result[1]; // return 2

从 PHP 7.1 开始,列表有了一个名为 destructuring 的新函数。这意味着可以执行以下操作:

$array = ['dog', 'cat', 'horse', 'fish'];
[$q, $w, $e, $r] = $array;

echo $q; // output: dog
echo $w; // output: cat

在函数中应用如下所示:

function descructingFunction(){
    return ['A', 'sample', 'descructing', 'function'];
}
[$a, $b, $c, $d] = descructingFunction();

echo $a; //output: A
echo $d; // output: function

带条件动态返回的 PHP 函数

function condFunc($x = true){
    $ret1 = "One";
    $ret2 = "Two";
    
    if($x == true){
        return $ret1;
    }else{
        return $ret2;
    }
}

在应用中:

echo condFunc(true);
//output: One

通过采用这种方法,它不需要返回多个值。因此,函数将处理条件以过滤所需的正确值。

PHP 数组与条件动态返回值的结合

稍微修改函数可以选择返回数组或动态返回值。

例:

function combination($x = true){
    $ret1 = "One";
    $ret2 = "Two";
    
    if($x === true){
        return $ret2;
    }
    if($x == "both"){
        return array($ret1, $ret2);
    }   
}

echo combination(); //output: Two
var_dump(combination("both")) //output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }

使用这种方法将使函数更加灵活。

PHP generatoryield 多个值

生成器函数没有返回值,而是根据需要的值而 yield。它返回一个可以迭代的对象。

例:

function multipleValues(){
    yield "return 1";
    yield "return 2";
}

$return = multipleValues();
foreach($return as $ret){
    echo $ret; //$ret first value is "return 1" then "return 2"
}

**注意:**生成器的关键字是 yield。它就像函数语句中的 return 一样,但是它并不停止执行并返回,而是为代码循环提供了值。

**注意:**当使用 yield 作为表达式时,必须用括号括起来。

例:

$generator = (yield $test);

相关文章 - PHP Function

  • PHP 中如何正确格式化带有前导零的数字
  • PHP 检查函数是否存在
  • PHP 私有函数
  • PHP 中的 die() 和 exit() 函数
  • PHP 中的 isset() 与 empty() 函数