채택완료

php 중복값 질문드립니다.

2022-08-31 (수) 11:48:57 2,103

입력값

Copy
<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

Copy
$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값

Copy
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개 / 댓글 3개

채택된 답변
+20 포인트
Copy
<?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 }  }  ?>

답변에 대한 댓글 1개

감사합니다.
Copy
<?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);
?>

답변에 대한 댓글 1개

답변 감사합니다.
위에분이 먼저 남기셔서.. 죄송합니다.
2022-08-31 (수) 11:59:15

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

답변에 대한 댓글 1개

답변 감사합니다.

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