테스트 사이트 - 개발 중인 베타 버전입니다

php 함수 리턴을 여러개 방법 채택완료

찬돌이 4년 전 조회 2,698

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

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

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

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

num_reverse($num1, $num2)으로

</p>

<p>// 기존 함수</p>

<p>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);</p>

<p> </p>

<p>// function num_reverse($num1, $num2) 처리 방법을 수정하고 싶습니다.</p>

<p>$num1 = mt_rand=(1, 99);</p>

<p>$num2 = mt_rand=(1, 99);</p>

<p>if($num1<$num2){</p>

<p> $tmp = $num1;</p>

<p> $num1=$num2;</p>

<p> $num2=$tmp;</p>

<p>}</p>

<p>list($a, $b) = num_reverse($num1, $num2);</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
B
4년 전

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

</p>

<p>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;

}</p>

<p>$example = num_reverse(13, 8);</p>

<p>print_r($example);</p>

<p>/*

Array

(

    [0] => Array

        (

            [0] => 10

            [1] => 3

        )</p>

<p>    [1] => Array

        (

            [0] => 8

        )</p>

<p>)

*/</p>

<p>

 

+ 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

 

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

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

</p>

<p>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;

}</p>

<p>print_r(num_reverse(13, 8));</p>

<p>// 결과는 위와 동일합니다.</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

핑크빈
4년 전

마지막 리턴부분에서

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

처리하시고

 

출력부분에서

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

$num = $return[0];

$num2 = $return[1];

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

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인