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

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

타버린나무 3년 전 조회 1,791

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




</tr></p>

<p><?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

ksort($age);</p>

<p>//arsort($age);</p>

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

    echo "</td>";

    echo '<td style="width: 50%; vertical-align: middle; border: 1px solid black;">';

    echo "
";

    echo "</td>";

    echo '</tr>';

}

?>

</table></p>

<p>

 

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

        이름순           나이순          
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개

채택된 답변
+20 포인트

이렇게 해보시면 될거에요

 

</p>

<pre>
<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></pre>

<p>

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

답변에 대한 댓글 2개

타버린나무
3년 전
답변감사합니다.
<td>안에 테이블을 넣을수 있는거군요. 또하나 배워갑니다.
릴보이즈
3년 전
네~ 비혼님한테 밀리게 될줄 알았는데 먼저 채택해주셔서 감사해요 ㅋㅋ

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

B
3년 전

최소 수정 코드입니다.

</p>

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




</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 "
";

    echo "</td>";

    echo '<td style="width: 50%; vertical-align: middle; border: 1px solid black;">';

    echo "Key=" . $keys[$i] . ", Value=" . $data[$keys[$i]];

    echo "
";

    echo "</td>";

    echo '</tr>';

    $i++;

}

?>

</table></p>

<p>

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

답변에 대한 댓글 3개

타버린나무
3년 전
답변 감사합니다. 잘 동작합니다.
늘 채택을 한분만 해야해서 죄송스럽습니다. 먼저 답변 달아주신분을 채택드리니 양해부탁드립니다.
B
BiHon
3년 전
괜찮습니다.

- 배열 접근에 대한 이해 후 응용&활용하는데 도움이 되었으면 합니다.
- 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
타버린나무
3년 전
친절한 부연 설명까지 너무 감사합니다.
열심히 공부하려합니다. ㅜㅜ;
배열 너무 어려워요..

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

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

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

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

답변에 대한 댓글 2개

타버린나무
3년 전
소트가 아니라
값을 이름순 옆에다가 나이순을 같이 쓰는걸 못하겠다는 말씀입니다.
릴보이즈
3년 전
아래 소스 참고해보세요
코딩 정리도 같이 해서 보여드렸습니다.

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

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

로그인