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 포인트
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>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인