HOWTO · PHP

여러 개의 리턴을 가진 함수를 크레이트하는 방법

몇 가지 접근 방식을 사용하여 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부터는리스트를위한 새로운 기능인 ‘파괴’가 있습니다. 그것은 다음과 같은 일을 할 수 있다는 것을 의미합니다.

$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 ‘제너레이터’에서 여러 값을 ‘수율’

generator 함수는 값을 반환하지 않으며, 필요한만큼 많은 수를 산출합니다. 반복 할 수있는 객체를 반환합니다.

예:

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"
}

** 참고 : ** 발전기의 키워드는 ‘수율’입니다. 함수 명령문에 대한 ‘반환’처럼 작동하지만 실행을 중지하고 반환하지 않으며 코드 루프에 가치를 제공합니다.

**주의 : ** ‘수율’을 표현식으로 사용하는 경우 괄호로 묶어야합니다.

예:

$generator = (yield $test);