배열 합치기? 병합?
본문
//중략 : sql 가져오기
for ($i=0; $row=sql_fetch_array($result); $i++) {
$stopbuy = explode(",",$row['it_7']);
// 중략 : 상품 줄 반복 ($stopby를 변수로 사용)
}
이 상황에서
for 구문이 끝난 상태에서
각 row 줄의 it_7을 병합하여 한 변수로 만드는게 가능할까요?
array_merge를 공부해봤는데 두개나 세개의 정해진 배열을 합하는게 아닌
각 불특정 숫자의 row를 병합하는거라 초보에겐 어렵습니다 ㅠㅠ
답변 3
그러면 그냥 다합쳐버리면됩니다
$value = '';
for ($i=0; $row=sql_fetch_array($result); $i++) {
$value .= (($value)? ',' : '').$row['it_7'];
}
//for 끝난뒤 배열로
$stopbuy = explode(',', $value);
$stopbuy에 입력된 배열값을 한 문자열로 다시 합치고싶다는건가요?
이게 맞다면 implode쓰시면됩니다 배열값을 문자열로 만들수있습니다 중간에 구분자도 넣을수있구요
점심먹고와서 ㅎㅎ
$row['it_7']의 "값"이 배열이아닌것이지
$row는 배열이에요 배열의 값이 배열이아닌거라고하면 더헷갈리실려나...
$row는 배열 $row['it_7'] 즉 배열의 안에 든 "값"은 배열이아니니깐요
for문에서 sql_fetch_array하면 각 DB의 데이터를 배열로 반복될때마다 한줄씩 가져옵니다
처음에 for문이전에 $value='';선언해줬죠? 빈 변수값을 하나두고
for문 반복문이 돌아갈때 위에 선언해준 $value변수값에 그냥 계속 더하는거에요
for문 반복문이 돌때마다 $value = $value + 1; 해주신다고 생각히시면되요
그럼 for문이 끝나면? for 반복돈 만큼 숫자가 $value변수에 담겨져있겠죠?
이것처럼 문자열도 반복할때마다 $value에 더해줘서 그냥 다합치는겁니다
$value .= (($value)? ',' : '').$row['it_7'];
php에서 .은 붙인다를 의미합니다
.= 식은 +=생각하시면돼요 $b += $b; 를 풀어쓰면 $b = $b + $b;
즉 $value = $value . ($value)? ',' : '') . $row['it_7'];
인것이지요
(($value)? ',' : '')를 준이유는 그냥 붙이면 "배,사과,감메론,수박"이 되기때문에
이미 앞에 추가한 값이 있을경우 , 를 붙여서 구분을 해주기 위함입니다