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

for문으로 만든 배열을 wr_1에 저장하려면? 채택완료

공대그녀 9년 전 조회 5,593

for문으로 4씩 증가된 배열만 추출하여, wr_1에 저장하려고 하는데 이상하게 마지막 값만 저장이 되어요. 
for문으로 만든 배열을 wr_1에 저장하려면 어떻게하면 될까요?

for ($i=1; $i<count($aaa); $i+=4) { 
$wr_1 = $aaa[$i],;
}  

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

답변 3개

채택된 답변
+20 포인트

$wr_1 = array();

for ($i=1; $i<count($aaa); $i+=4) {

   $wr_1[] = $aaa[$i],;
}

for 안에 $i+=4 이건 왜 하신 건지 모르겠네요.

그리고 $aaa 변수 안에 뭐가 들었는지도 알려 주셔야 할 것 같습니다.

 

질문을 남기실 때 제일 좋은 방법은 자기가 한 코드를 올리는 것보다 차라리 어떤 것들이 있는데 이걸 갖고 결과를 어떻게 받고 싶다라고 하시는 게 좋습니다.

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

답변에 대한 댓글 13개

공대그녀
9년 전
왕계란님 답변 감사드려요.
$aaa 에 ",mb_id,,wr_id,,mb_id,,wr_id,,mb_id,,wr_id," 이런식으로 아이디에 wr_id가 같이 저장이 됩니다. 4씩 더한 배열만 추출 하여서 아이디만 wr_1에 저장을 하려고 합니다.
아래처럼 wr_1에 아이디를 저장하여서, write_update에 넣어서 쪽지 발송 아이디를 추출하려고 합니다.

"mb_id,mb_id,mb_id,mb_id,"
왕계란
9년 전
4씩 더한 배열만 추출한다 하시는 게 무슨 의민지 모르겠습니다.
print_r($aaa);
이렇게 한 값을 보여 주세요.
공대그녀
9년 전
test1,test2,test3,test3 가 아이디구요.

$aaa는

,test1,1,test2,2,test3,3,test4,4,test5,5, 이런식으로 저장이 되는데,

$aaa[1]$aaa[5]$aaa[9]$aaa[13] 이렇게 1부터 시작해서 4씩 증가하면,

test1,test2,test3,test3

아이디 추출이 가능해서요.

이 아이디들을 wr_1에 저장을 하고, write_update에서 쪽지보내기용 아이디로
쓰려고 합니다.
왕계란
9년 전
[code]
<?
$str = "test1,1,test2,2,test3,3,test4,4,test5,5";
$aaa = explode(",", $str);
$num = array();
foreach($aaa as $v) {
if(!is_numeric($v)) $num[]= $v;
}

print_r($num);
[/code]
http://nyaongii.dothome.co.kr/temp/wrid_115923.php
공대그녀
9년 전
왕계란님 답변 감사드려요.
미리 정확히 말씀못드려 죄송해요.
$aaa값은 ",$mb_id,,+$wr_id," 이렇게 구성이 됩니다.
숫자 앞에는 +가 붙어 있고, mb_id와 wr_id 사이에 콤마가 저장이 되어요.
검색때문에 아이디 양옆에 콤마를 붙였습니다.

,test1,,+1,,test2,,+2,,test3,,+3,,test4,,+4,,test5,,+5,

이런식이 정확한 값입니다.

도움 부탁 드려요~ㅜㅜ
왕계란
9년 전
[code]
<?
$str = ",test1,,+1,,test2,,+2,,test3,,+3,,test4,,+4,,test5,,+5,";
$aaa = explode(",", $str);
$aaa = array_filter($aaa);
$num = array();
foreach($aaa as $v) {
if(!is_numeric(str_replace("+", "", $v))) $num[]= $v;
}

print_r($num);
[/code]
http://nyaongii.dothome.co.kr/temp/wrid_115923.php
공대그녀
9년 전
왕계란님 너무 잘됩니다. 최고세요!

아래처럼 구성하였습니다. 정말 감사드려요.
좋은 하루 되세요.

<?
$aaa= explode(",", $str);
$aaa = array_filter($aaa);
$bbb = array();
foreach($aaa as $v) {
if(!is_numeric(str_replace("+", "", $v))) $bbb[]= $v;
}

foreach($bbb as $i) {
$ccc .= $i.',';
}

$ccc = rtrim($ccc,',');

$wr_1 = "$ccc";

echo "$wr_1";
?>
왕계란
9년 전
foreach($bbb as $i) {
$ccc .= $i.',';
}
이렇게 하시는 것보단
$ccc = implode(",", $bbb);
이렇게 하는 게 낫습니다.
마지막에 ,도 안 붙어서요.
공대그녀
9년 전
왕계란님 implode 로 하니 훨씬 깔끔하고 좋아요. 감사드려요.

아이디가 중복이 되는 문제가 있는데, 중복되는 아이디를 하나로 만드는 방법이 있을까요?
"test1,test3,test1,test2" 이렇게 생성되면, test1이 중복이 되어버려서요.
쪽지가 2번 날라갈 것 같아서, 걱정이 되네요.
왕계란
9년 전
[code]
<?
$str = "test1,1,test2,2,test3,3,test4,4,test5,5";
$aaa = explode(",", $str);
$num = array();
foreach($aaa as $v) {
if(!is_numeric($v)) $num[]= $v;
}
$num = array_unique($num);
print_r($num);
[/code]
공대그녀
9년 전
와! 왕계란님 정말 대단하세요. 최고입니다.
너무너무 잘되고 좋아요. ㅎ
감사합니다~ 최고!!
공대그녀
9년 전
왕계란님 마지막으로 도움 한번 더 부탁드려요.ㅜㅜ
쪽지를 보내려면 아이디를 따옴표가 둘러싸고 있어야 되나봐요.

<?
// 문의글등록 쪽지전송
$recv = array("아이디1","아이디2"); //쪽지 전송 아이디
$me_memo = "쪽지가 발송되었습니다."; //관리자에게 보낼 메세지

foreach($recv as $v) {

$row = sql_fetch(" select mb_id, mb_nick, mb_open, mb_leave_date, mb_intercept_date from {$g5['member_table']} where mb_id = '{$v}' ");
$recv_mb_id = $row['mb_id'];

if($recv_mb_id) {
$recv_mb_nick = get_text($row['mb_nick']);
$tmp_row = sql_fetch(" select max(me_id) as max_me_id from {$g5['memo_table']} ");
$me_id = $tmp_row['max_me_id'] + 1;

// 쪽지 INSERT
$sql = " insert into {$g5['memo_table']} ( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo ) values ( '$me_id', '$recv_mb_id', '{$member['mb_id']}', '".G5_TIME_YMDHIS."', '{$me_memo}' ) ";
sql_query($sql);

}
}
?>




<?
$aaa= explode(",", $str);
$aaa = array_filter($aaa);
$bbb = array();
foreach($aaa as $v) {
if(!is_numeric(str_replace("+", "", $v))) $bbb[]= $v;
}
$bbb = array_unique($bbb);
$ccc = implode(",", $bbb);
?>

$ccc 의 값이 test1,test2,test3 라면
$ccc 값이 'test1','test2','test3' 로 아이디 사이에 따옴표가 붙어 나오게 하려면
어떻게해야 되나요?
도움 부탁 드려요~
왕계란
9년 전
$ccc = "'".implode("', '", $bbb)."'";

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

9년 전

로직이 이거면 당연히 마지막 값만 저장되는거 아닌가요;;;;

 

$wr_1 변수에 for문으로 계속 증가값을 넣어주니 마지막 값만 들어가겠죠;;;

 

문제점은 이거고 해결방법은 wr_1에 넣으시려는거보면 게시판 디비에 어떤 값을 넣으시려는거 

 

같은데 정확히 몰 하시려는지 몰라서 말씀드리기가 어려워요;;;ㅎㅎ;;

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

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

ceoseo
9년 전

당연하죠.

 

왜냐면 변수가 for 루프돌면서 계속 덮어씌워지고 있기 때문에 마지막 실행 값만 저장되는거죠.

 

$wr_1 변수가 아니라 $wr_1[] 변수를 쓰셔서 변수값을 계속 쌓아야 합니다. 

 

 

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

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

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

로그인