배열에서 이름순, 나이순으로 나란히 출력하기

배열에서 이름순, 나이순으로 나란히 출력하기

QA

배열에서 이름순, 나이순으로 나란히 출력하기

본문


<table style="width: 100%; text-align: center; vertical-align: middle;">
<tr>
<td style="width: 50%; vertical-align: middle; border: 1px solid black;"> 이름순 </td>
<td style="width: 50%; vertical-align: middle; border: 1px solid black;"> 나이순 </td>
<br>
</tr>
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
ksort($age);
//arsort($age);
foreach($age as $x => $x_value) {
    echo '<tr>';
    echo '<td style="width: 50%; vertical-align: middle; border: 1px solid black;">';
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    echo "</td>";
    echo '<td style="width: 50%; vertical-align: middle; border: 1px solid black;">';
    echo "<br>";
    echo "</td>";
    echo '</tr>';
}
?>
</table>

 

위 코드를 실행하면 아래처럼 나옵니다.

        이름순           나이순          
Key=Ben, Value=37  
Key=Joe, Value=43  
Key=Peter, Value=35  

 

제가 원하는것은 아래처럼 나오는 것입니다.

        이름순           나이순          
Key=Ben, Value=37 Key=Joe, Value=43
Key=Joe, Value=43 Key=Ben, Value=37
Key=Peter, Value=35 Key=Peter, Value=35

 

머릴 굴려봤지만  나란히 보여줄 방법을 못찾겠습니다.

 

이 질문에 댓글 쓰기 :

답변 3

이렇게 해보시면 될거에요

 



<table style="width: 100%; text-align: center; vertical-align: middle;">
    <thead>
    <tr>
        <td style="vertical-align: middle; border: 1px solid black;"> 이름순 </td>
        <td style="vertical-align: middle; border: 1px solid black;"> 나이순 </td>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td>
            <table width="100%">
                <?php
                $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
                ksort($age);
                foreach($age as $x => $x_value) {
                    echo '<tr>';
                    echo '<td style="vertical-align: middle; border: 1px solid black;">';
                    echo  $x . ",".$x_value;
                    echo "</td>";
                    echo '</tr>';
                }
                ?>
            </table>
        </td>
        <td>
            <table width="100%">
                <?php
                arsort($age);
                foreach($age as $x => $x_value) {
                    echo '<tr>';
                    echo '<td style="vertical-align: middle; border: 1px solid black;">';
                    echo  $x . ",".$x_value;
                    echo "</td>";
                    echo '</tr>';
                }
                ?>
            </table>
        </td>
    </tr>
    </tbody>
</table>

php sort 찾아보면 될것같은데요

https://blog.naver.com/diceworld/220190259458

최소 수정 코드입니다.


<table style="width: 100%; text-align: center; vertical-align: middle;">
<tr>
<td style="width: 50%; vertical-align: middle; border: 1px solid black;"> 이름순 </td>
<td style="width: 50%; vertical-align: middle; border: 1px solid black;"> 나이순 </td>
<br>
</tr>
<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
ksort($age);
$data = $age;
arsort($data);
$keys = array_keys($data);
$i = 0;
foreach($age as $x => $x_value) {
    echo '<tr>';
    echo '<td style="width: 50%; vertical-align: middle; border: 1px solid black;">';
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    echo "</td>";
    echo '<td style="width: 50%; vertical-align: middle; border: 1px solid black;">';
    echo "Key=" . $keys[$i] . ", Value=" . $data[$keys[$i]];
    echo "<br>";
    echo "</td>";
    echo '</tr>';
    $i++;
}
?>
</table>

괜찮습니다.

- 배열 접근에 대한 이해 후 응용&활용하는데 도움이 되었으면 합니다.
- 1개 테이블과 3개 테이블의 차이가 있는데 이 부분만 유념하면 좋습니다.

성격이 다르기 때문에 각각의 테이블로 출력하는 것은 나쁘지 않습니다.
그것을 굳이 테이블 내에 둘 필요까지는 없습니다.

테이블 내 2개의 테이블이 있는데, 데이터 구하는 부분의 소요 시간이 크거나,
출력할 데이터가 많을 경우 렌더링(화면 출력)이 그만큼 늦어집니다.

데이터를 어디에서 가져오는지 모르겠으나 DB에서 가져오는 것처럼 연관 배열 형태를 띄면
정렬이 편해집니다.
예) $data = [
    ['name'=>'Peter', 'age'=>35],
    ['name'=>'Ben', 'age'=>37],
    ['name'=>'Joe', 'age'=>43],
];
이런 형태면, 이름순 정렬, 나이순 정렬,
이름순 정렬 시 이름이 같을 때 나이 오름차순/내림차순,
나이순 정렬 시 나이가 같을 때 이름 오름차순/내림차순 정렬이 편합니다.

+ array_multisort()
- https://www.php.net/manual/en/function.array-multisort.php
- http://docs.php.net/manual/kr/function.array-multisort.php

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

회원로그인

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