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

php 크기가 다른 다차원 배열의 자리 맞추는 방법 채택완료

찬돌이 4년 전 조회 2,093

</p>

<p>$arr=array(

    "a"=>"apple",

    "b"=>"banana",

    "c"=>array("x","y","z"));

echo "<table border=1>";

echo "<tr>";

foreach($arr as $key=>$val) {

    if(is_array($arr[$key])) {

        foreach($val as $key1=>$val1) {

            echo "<td> {$val1} </td>";

        }

    }else {

        echo "<td> {$val} </td>";

    }

    echo "</tr>";

}

echo "</table>";</p>

<p>

 

출력 결과가 아래 처럼 됩니다.

(apple)

(banana)

(x)         (y)     (z)

- ()는 table의 사각형으로 생각하세요

 

원하는 출력 결과는

(apple)      ( )    ( )

(banana)   ( )    ( )

(x)          (y)    (z)

 

즉 3 * 3으로 출력이 되면서 없는 자리에는 공백처리를 어떻게 할까요?

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

답변 2개

채택된 답변
+20 포인트
핑크빈
4년 전

 

</p>

<p><?php</p>

<p>$arr=array(</p>

<p>    "a"=>"apple",</p>

<p>    "b"=>"banana",</p>

<p>    "c"=>array("x","y","z")</p>

<p>);</p>

<p>    </p>

<p>$arr_cnt = count($arr[max(array_keys($arr))]); // 가장큰배열길이 가져오기</p>

<p>

 </p>

<p>echo "<table border=1>";</p>

<p>echo "<tr>";</p>

<p>foreach($arr as $key=>$val) {</p>

<p>  </p>

<p>    if(is_array($arr[$key])) {</p>

<p>        foreach($val as $key1=>$val1) {</p>

<p>            echo "<td> {$val1} </td>";</p>

<p>        }</p>

<p>    }else {</p>

<p>        echo "<td> {$val} </td>";</p>

<p> </p>

<p>       for($i=0;$i<$arr_cnt-1;$i++)</p>

<p>       {</p>

<p>           echo '<td></td>';</p>

<p>       }</p>

<p>    }</p>

<p>    echo "</tr>";</p>

<p>}</p>

<p>echo "</table>";</p>

<p>?></p>

<p>

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

답변에 대한 댓글 2개

찬돌이
4년 전
항상 빠르게 답변 해 주시는 Phillips 님 감사드립니다.
P
Phillips
4년 전
$arr_cnt = count($arr[max(array_keys($arr))]); // 가장큰배열길이 가져오기

$arr_cnt = count(max(array_values($arr))); // 가장큰배열길이 가져오기
이렇게바꿔주세요 잘못썻네요.ㅎ

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

4년 전

$arr_cnt = count($arr[max(array_keys($arr))]); // 가장큰배열길이 가져오기로도 원하는 답을 얻었습니다.

다시 한번 감사드립니다.  

</p>

<p>$arr=array(

    "a"=>"apple",

    "b"=>"banana",

    "c"=>array("x","y","z"));

$arr_cnt = count($arr[max(array_keys($arr))]);</p>

<p>echo "<table border=1>";

echo "<tr>";

foreach($arr as $key=>$val) {

    if(is_array($arr[$key])) {

        foreach($val as $key1=>$val1) {

            echo "<td> {$val1} </td>";

        }

    }else {

        echo "<td> {$val} </td>";

        for($i=0; $i<$arr_cnt-1; $i++) {

            echo "<td></td>";

        }

    }

    echo "</tr>";

}

echo "</table>";</p>

<p>

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

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

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

로그인