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

여분필드 배열로 저장되어있는걸로 테이블에 넣을려고합니다 채택완료

발렌슈테인 4년 전 조회 4,191

이렇게 하면 문제없이 잘되는데요

<table border=1>
<?php
$list= array(); 

$list[] = array('wr_1' =>'과일', 'wr_2' =>'수박', 'wr_3' => '5000원');
$list[] = array('wr_1' =>'과일', 'wr_2' => '사과', 'wr_3' => '1200원');
$list[] = array('wr_1' =>'과일', 'wr_2' => '배', 'wr_3' => '2500원');
$list[] = array('wr_1' =>'과자',  'wr_2' =>'새우깡', 'wr_3' => '500원');
$list[] = array('wr_1' =>'과자', 'wr_2' =>'고래밥', 'wr_3' => '500원');
$list[] = array('wr_1' =>'음료수',  'wr_2' =>'사이다', 'wr_3' => '300원');

$tr = array(); $tr_html = '';

foreach ($list as $k => $v)  
   $tr[$v['wr_1']][] = "<tr><td>{$v['wr_1']}</td><td>{$v['wr_2']}</td><td>{$v['wr_3']}</td></tr>";

foreach ($tr as $k => $v) {
    $rows = count($v);
    if ($rows > 1) {
        $v = preg_replace('#<tr><td>.+?</td>#', '<tr>', $v); 
        $v[0] = preg_replace('/<tr>/', "<tr><td rowspan=\"$rows\">$k</td>", $v[0]);
    }
    $tr_html .= implode('', $v);

echo $tr_html;
?>
</table>

 

아래처럼 여분필드에 있는 구분자를 배열로 담아서 해볼려는데 잘안됩니다 ㅠㅠ

 

$wr_1_arr = explode(",", $view['wr_1']); // 과일,과자,음료수

$wr_2_arr = explode(",", $view['wr_2']); // 수박,사과,배,새우깡,고래밥

$wr_3_arr = explode(",", $view['wr_3']); // 5000원,1200원,2500원,500원,500원,300원

 

몇시간째 하다가 잘안되서 도움을 청합니다 ㅠㅠ

 

작업하던 소스는 처음부터 다시 해볼려고 지워서 없습니다..

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

답변 3개

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

</p>

<p>$wr_1_arr = explode(",", $view['wr_1']); // 과일,과자,음료수</p>

<p>$wr_2_arr = explode(",", $view['wr_2']); // 수박,사과,배,새우깡,고래밥</p>

<p>$wr_3_arr = explode(",", $view['wr_3']); // 5000원,1200원,2500원,500원,500원,300원</p>

<p> </p>

<p>for ($i = 0; $i < count($wr_1_arr); $i++) {

    echo "<tr>";

    echo "<td>" . $wr_1_arr[$i] . "</td>";

    echo "<td>" . $wr_2_arr[$i] . "</td>";

    echo "<td>" . $wr_3_arr[$i] . "</td>";

    echo "</tr>";

}</p>

<p>

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

답변에 대한 댓글 2개

발렌슈테인
4년 전
마르스컴퍼니님 감사합니다

그런데 위에 처럼 안될꺼같은기분이 듭니다

죄송하지만 위에소스 전체를 포문으로 바꿔서 알려주실수 있으실까요?

일단 제가 한번 도전해보겠습니다..후
마르스컴퍼니
4년 전
[code]
<table border="1">
<?php
$wr_1_arr = explode(",", $view['wr_1']);
$wr_2_arr = explode(",", $view['wr_2']);
$wr_3_arr = explode(",", $view['wr_3']);

for ($i = 0; $i < count($wr_1_arr); $i++) {
echo "<tr>";
echo "<td>" . $wr_1_arr[$i] . "</td>";
echo "<td>" . $wr_2_arr[$i] . "</td>";
echo "<td>" . $wr_3_arr[$i] . "</td>";
echo "</tr>";
}
?>
</table>
[/code]

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

https://www.php.net/array_combine

<?php
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);

print_r($c);
?>

$wr_1_arr = explode(",", $view['wr_1']); // 과일,과자,음료수

$list[] = array('wr_1' =>'과일', 'wr_2' =>'수박', 'wr_3' => '5000원');

이렇게 만들고 싶다면

 

$w_key=array( 'wr_1', 'wr_2','wr_3','wr_4');

여기서 갯수는 같아야 합니다.

$new_arry= array_combine( $w_key, $wr_1_arr);

 

 

2차원 배열을 <table로 만드는 방법은 다양하지만

하시는 방법은 좀 복잡해 보이는군요.

https://stackoverflow.com/questions/4746079/how-to-create-a-html-table-from-a-php-array

참고해 보세요.

 

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

답변에 대한 댓글 1개

발렌슈테인
4년 전
엑스엠엘님 답변 감사합니다

현제 대충 해결된거같아서 다시 한번더 검토중입니다^^;

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

4년 전

$tr_html .= implode('', $v); 는 배열을 쭈욱 일렬로 문자열로 변환한것입니다

 

explode 사용한 부분은 콤마로 구분해 배열로 변환한것이므로 여분필드에 들어가지 않습니다 

 

여분필드에 들어가려면 문자열로 변환해서 넣어주세요 

 

 

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

답변에 대한 댓글 1개

발렌슈테인
4년 전
이쫑님 안녕하세요



여분필드에 저장하는게 아니고 여분필드에 저장되어있는 구분자를



explode로 아래처럼 가져와서 작업할려고 하는겁니다..



$wr_1_arr = explode(",", $view['wr_1']); // 과일,과자,음료수

$wr_2_arr = explode(",", $view['wr_2']); // 수박,사과,배,새우깡,고래밥

$wr_3_arr = explode(",", $view['wr_3']); // 5000원,1200원,2500원,500원,500원,300원



소스를 수정하고있는데 잘안되서요..

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

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

로그인