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];
이렇게처리해주면되겠네요.
답변을 작성하시기 전에 로그인 해주세요.