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

이중배열 질문 채택완료

장바구니에 각 row에 배열된 값을 다시 배열하여 검수하고 싶습니다.

 

설명에 필요한 소스만 보여드리면

 

</p>

<p><?php</p>

<p>// $s_cart_id 로 현재 장바구니 자료 쿼리

        $sql = " select a.ct_id,

                        a.it_id,

                        b.it_7</p>

<p>                   from {$g5['g5_shop_cart_table']} a left join {$g5['g5_shop_item_table']} b on ( a.it_id = b.it_id )

                  where a.od_id = '$s_cart_id' ";

        $sql .= " group by a.it_id ";

        $sql .= " order by a.ct_id ";

        $result = sql_query($sql);</p>

<p> </p>

<p>for ($i=0; $row=sql_fetch_array($result); $i++)

{</p>

<p>$stopbuy = explode(",",$row['it_7']);</p>

<p> </p>

<p>?></p>

<p> </p>

<p>   <?php if (in_array($member['mb_id'], $stopbuy)) { ?>

        <div class="cart_stopbuy">구매제한</div>

   <?php } ?></p>

<p> </p>

<p><?php } ?></p>

<p> </p>

<p>//중략</p>

<p>//아래부분이 동작이 안됨</p>

<p> </p>

<p><?php if (in_array($member['mb_id'], $stopbuy)) { ?></p>

<p><p id="sit_ov_soldout">고객님은 이 상품의 구매권한이 없습니다.</p></p>

<p><?php } ?></p>

<p> </p>

<p>

 

이런 상황입니다.

 

for 구문으로 각 row가 만들어져 있고

it_7은 값1,값2,값3.. 이런 식으로 구분되어 있어서

$stopbuy = explode(",",$row['it_7']);

if (in_array($member['mb_id'], $stopbuy))

 

이런식으로 각 row의 it_7 값을 구할 수 있는데요

 

코드 밑 부분은 for 구문 밖이고 각 row의 it_7 값을 다시 배열해야 하는 상황이라 동작이 되지 않습니다.

 

예를 들어 장바구니에

 

상품 1의 it_7 = 배, 사과, 감

상품 2의 it_7 = 수박

 

이 담겨 있을 때

 

코드 밑 부분에서

 

배, 사과, 감, 수박을 나열해서 $member['mb_id']와 비교해야 하는 상황인거에요 ㅠㅠ

어떻게 하면 좋을까요?

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

답변 2개

채택된 답변
+20 포인트

각 row의 값이 다시 필요한 상황인것 같습니다.

for문 안에서 stopbuy 배열을 합쳐두었다가,

for문 밖에서 in_array로 비교하는 방법이 어떨까 합니다.

배열이 아니더라도, 각 row의 'it_7'을 string으로 합쳐두었다가

사용해도 되는데,, 배열이 더 간단하네요.

 

</p>

<p>$result[0]['it_7'] = "배, 사과, 감";

$result[1]['it_7'] = "수박";

$result[2]['it_7'] = "수박, 사과";</p>

<p> </p>

<p>$member['mb_id'] = "수박";</p>

<p> </p>

<p>$all_stopbuy = array();

for ($i=0; $i < sizeof($result); $i++) {

    $row = $result[$i];

    $stopbuy = explode(",",$row['it_7']);

    

    if (in_array($member['mb_id'], $stopbuy)) {

        echo "Purchase restrictions error
";

    }

    

<span style="color:#e74c3c;">    $all_stopbuy = array_merge($all_stopbuy, $stopbuy);</span>

    

}</p>

<p> </p>

<p><span style="color:#e74c3c;">if (in_array($member['mb_id'], $all_stopbuy)) {

    echo "Purchase rights error 
";

}</span></p>

<p>

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

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

stopbuy를 포문 위로 빼서 해보세용

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

답변에 대한 댓글 1개

일단 위치는 submit 변화를 주기 위한거라 저 위치여야 해요 ㅜㅜ

그리고 각 row의 값을 받아야 여러개 상품 it_7의 값을 다 받아올 수 있을 것 같아서요

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

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

로그인

전체 질문 목록

🐛 버그신고