php 배열 자릿수 마추기
본문
function num_reverse() {
if ( func_num_args()<1 ) return false; // 함수 실행시 넘겨 받은 파라미터의 수가 적으면 리턴 처리
$result = [];
foreach ( func_get_args() as $key=>$num ) { // 함수 실행시 넘겨받은 파라미터를 배열로 저장
$num = (string)$num; // 문자열 변환
$len=strlen($num); // 문자열 길이
for ($i=0; $i<$len; $i++) {
$result[$key][] = $num[$i] * 10**($len-$i-1); // 2차 배열로 저장
}
}
return $result;
}
$arr = num_reverse(1234,234,34,4);
echo "<table border=1>";
echo "<tr><td>천의 자리</td><td>백의 자리</td><td>십의 자리</td><td>일의 자리</td></tr>";
foreach($arr as $key=>$val) {
echo "<tr align='center'>";
foreach($val as $key1=>$val1) {
echo "<td> {$val1}</td>";
}
echo "</tr>";
}
echo "</table>";
< 출력 결과 >
천의 자리 백의 자리 십의 자리 일의 자리
1000 200 30 4
200 30 4
30 4
4
< 원하는 출력 결과 >
천의 자리 백의 자리 십의 자리 일의 자리
1000 200 30 4
200 30 4
30 4
4
입니다
답변 1
구현 방법은 다양한데 질문의 코드를 그대로 사용하겠다면
여기에 약간의 코드를 더해주면 원하는 형태로 출력됩니다.
echo "<table border=1>";
echo "<tr><td>천의 자리</td><td>백의 자리</td><td>십의 자리</td><td>일의 자리</td></tr>";
foreach($arr as $key=>$val) {
echo "<tr align='center'>";
$tds = array_fill(0, 4, '<td> </td>');
foreach($val as $key1=>$val1) {
$len = strlen($val1); // 1000>4, 200>3, 30>2, 4>1
// if ( $len>4 ) continue; // 천 단위 초과 제외하려면 사용
$tds[4-$len] = '<td>'.$val1.'</td>';
}
echo implode('', $tds); // implode($tds) 사용 가능하지만…
echo "</tr>";
}
echo "</table>";
+ array_fill()
- https://www.php.net/manual/en/function.array-fill.php
- http://docs.php.net/manual/kr/function.array-fill.php
+ implode()
!-->
답변을 작성하시기 전에 로그인 해주세요.