php 중복값 질문드립니다.

php 중복값 질문드립니다.

QA

php 중복값 질문드립니다.

본문

입력값

<tr><td>
<select name="wr_12[]">
    <option value="딸기">딸기</option>
    <option value="감자">감자</option>
    <option value="레몬">레몬</option>
    <option value="수박">수박</option>
</select>
<input value="wr_21[]" value="">수량</input>
</td></tr>
<tr><td>
<select name="wr_12[]">
    <option value="딸기">딸기</option>
    <option value="감자">감자</option>
    <option value="레몬">레몬</option>
    <option value="수박">수박</option>
</select>
<input value="wr_21[]" value="">수량</input>
</td></tr>

php

    $sql = "
    select
        group_concat(wr_12 separator '||') wr_12a,
        group_concat(wr_21 separator '||') wr_21b
      from {$write_table}
         where wr_29 between '{$stx1}' and '{$stx2}'
        ";
    $result = sql_query($sql, true);
    while ($row = sql_fetch_array($result)) {
        $list_namea = explode('||',$row['wr_12a']);
        $list_nameb = explode('||',$row['wr_21b']);
        $result_array = array();
        foreach ($list_namea as $key=>$val)
        {
            $result_array[$key] = array($list_namea[$key],$list_nameb[$key]);
        }
        for ($i=0; $i<count($result_array); $i++) { ?>
    <tr>
        <td><?php echo $result_array[$i][0]; ?></td>
        <td><?php echo $result_array[$i][1]; ?></td>
    </tr>
    <?php }  }  ?>

결과값 
print_r2값

Array
(
    [0] => Array
        (
            [0] => 딸기
            [1] => 4
        )
    [1] => Array
        (
            [0] => 딸기
            [1] => 4
        )
    [2] => Array
        (
            [0] => 멜론
            [1] => 4
        )
    [3] => Array
        (
            [0] => 멜론
            [1] => 10
        )
    [4] => Array
        (
            [0] => 딸기
            [1] => 4
        )
    [5] => Array
        (
            [0] => 수박
            [1] => 1
        )
    [6] => Array
        (
            [0] => 감자
            [1] => 1
        )
)

제품    개수
딸기    4
딸기    4
멜론    4
멜론    10
딸기    4
수박    1
감자    1


중복된 결과값은 개수를 곱해서 한개씩만 뽑고 싶습니다.


원하는 결과값
딸기    12
멜론    14
수박    1
감자    1

이것저것 막 해보고 있는데... 원하는 값이 나오질 않네요 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 3


<?php
    $sql = "
    select
        group_concat(wr_12 separator '||') wr_12a,
        group_concat(wr_21 separator '||') wr_21b
      from {$write_table}
         where wr_29 between '{$stx1}' and '{$stx2}'
        ";
    $result = sql_query($sql, true);
    while ($row = sql_fetch_array($result)) {
        $list_namea = explode('||',$row['wr_12a']);
        $list_nameb = explode('||',$row['wr_21b']);
        $result_array = array();
        foreach ($list_namea as $key=>$val)
        {
            $result_array[$list_namea[$key]] += $list_nameb[$key];
        }
        foreach ($result_array as $key=>$val) { ?>
    <tr>
        <td><?php echo $key; ?></td>
        <td><?php echo $val; ?></td>
    </tr>
    <?php }  }  ?>

음.. array_search 혹은 in_array로 하면 되지 않을까요?


<?php
$arr = array(
    array
    (
        '딸기',
        4
    ),
    array
    (
        '딸기',
        4
    ),
    array
    (
        '멜론',
        4
    ),
    array
    (
        '멜론',
        10
    ),
    array
    (
        '딸기',
        4
    ),
    array
    (
        '수박',
        1
    ),
    array
    (
        '감자',
        1
    )
);
print_r($arr);
$result = array();
array_walk($arr, function($value) use (&$result) {
    $k = $value[0];
    $v = $value[1];
    if (isset($result[$k]) == false) {
        $result[$k] = 0;
    }
    $result[$k] += $v;
});
print_r($result);
?>
답변을 작성하시기 전에 로그인 해주세요.
전체 10,639
QA 내용 검색

회원로그인

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