이중배열 질문
본문
장바구니에 각 row에 배열된 값을 다시 배열하여 검수하고 싶습니다.
설명에 필요한 소스만 보여드리면
<?php
// $s_cart_id 로 현재 장바구니 자료 쿼리
$sql = " select a.ct_id,
a.it_id,
b.it_7
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);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$stopbuy = explode(",",$row['it_7']);
?>
<?php if (in_array($member['mb_id'], $stopbuy)) { ?>
<div class="cart_stopbuy">구매제한</div>
<?php } ?>
<?php } ?>
//중략
//아래부분이 동작이 안됨
<?php if (in_array($member['mb_id'], $stopbuy)) { ?>
<p id="sit_ov_soldout">고객님은 이 상품의 구매권한이 없습니다.</p>
<?php } ?>
이런 상황입니다.
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
각 row의 값이 다시 필요한 상황인것 같습니다.
for문 안에서 stopbuy 배열을 합쳐두었다가,
for문 밖에서 in_array로 비교하는 방법이 어떨까 합니다.
배열이 아니더라도, 각 row의 'it_7'을 string으로 합쳐두었다가
사용해도 되는데,, 배열이 더 간단하네요.
$result[0]['it_7'] = "배, 사과, 감";
$result[1]['it_7'] = "수박";
$result[2]['it_7'] = "수박, 사과";
$member['mb_id'] = "수박";
$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<br>";
}
$all_stopbuy = array_merge($all_stopbuy, $stopbuy);
}
if (in_array($member['mb_id'], $all_stopbuy)) {
echo "Purchase rights error <br>";
}
stopbuy를 포문 위로 빼서 해보세용
답변을 작성하시기 전에 로그인 해주세요.