php 함수 리턴을 여러개 방법

php 함수 리턴을 여러개 방법

QA

php 함수 리턴을 여러개 방법

본문

$a 와 $b 두 숫자를 처리하는 함수를 만들었습니다.

그런데, 문제점은 2번 반복을 하고 있습니다.

$a=num_reverse(13);
$b=num_reverse(8);

이것을 함수 파라미터가 2개 들어가는 함수로 수정하고 싶습니다.

num_reverse($num1, $num2)으로


// 기존 함수
function num_reverse($num) {
    $num_r = strrev($num);
    $x=1;
    $arr=[];
    for($i=0; $i<strlen($num_r); $i++) {
        $aa = substr($num_r, $i,1)*$x; 
        array_push($arr, $aa);
        $x = $x * 10;
    }
    return array_reverse($arr);    
}
$a=num_reverse(13);
$b=num_reverse(8);
 
// function num_reverse($num1, $num2) 처리 방법을 수정하고 싶습니다.
$num1 = mt_rand=(1, 99);
$num2 = mt_rand=(1, 99);
if($num1<$num2){
 $tmp = $num1;
 $num1=$num2;
 $num2=$tmp;
}
list($a, $b) = num_reverse($num1, $num2);

이 질문에 댓글 쓰기 :

답변 2

그에 맞게 함수를 작성해줘야 합니다.


function num_reverse() {
    if ( func_num_args()<1 ) return false;
    $result = [];
    foreach ( func_get_args() as $k=>$num ) {
        $num = (string)$num;
        for ($i=0, $len=strlen($num); $i<$len; $i++) {
            $result[$k][] = $num[$i] * 10**($len-$i-1);
        }
    }
    return $result;
}
$example = num_reverse(13, 8);
print_r($example);
/*
Array
(
    [0] => Array
        (
            [0] => 10
            [1] => 3
        )
    [1] => Array
        (
            [0] => 8
        )
)
*/

 

+ func_num_args()

- https://www.php.net/manual/en/function.func-num-args.php

 

+ func_get_args()

- https://www.php.net/manual/en/function.func-get-args.php

 

참고로, 질문의 함수를 그대로 사용하려면…

방법은 많은데 기존 코드 그대로에 약간 추가만 해주면 되겠네요.


function num_reverse($num, $num2) {
    $result = [];
    foreach ( [$num, $num2] as $num ) {
        $num_r = strrev($num);
        $x=1;
        $arr=[];
        for($i=0; $i<strlen($num_r); $i++) {
            $aa = substr($num_r, $i,1)*$x;
            array_push($arr, $aa);
            $x = $x * 10;
        }
        $result[] = array_reverse($arr);    
    }
    return $result;
}
print_r(num_reverse(13, 8));
// 결과는 위와 동일합니다.

마지막 리턴부분에서

return array(리턴값배열1, 리턴값배열2);

처리하시고

 

출력부분에서

$return = num_reverse($num,$num2);

$num = $return[0];

$num2 = $return[1];

이렇게처리해주면되겠네요.

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,662 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT