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

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

QA

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

본문

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

<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


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

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

 

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

 

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

 

 

이쫑님 안녕하세요

 

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

 

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원

 

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

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

참고해 보세요.

 

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

회원로그인

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