如何建立具有多個返回值的 PHP 函式

  1. PHP array 返回多個值
  2. 帶條件動態返回的 PHP 函式
  3. PHP 陣列與條件動態返回值的結合
  4. PHP generatoryield 多個值

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 中如何正確格式化帶有前導零的數字
  • comments powered by Disqus