php 중복값 질문드립니다.

php 중복값 질문드립니다.

QA

php 중복값 질문드립니다.

답변 3

본문

입력값

<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);
?>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,331
© SIRSOFT
현재 페이지 제일 처음으로