문자열 두개를 합치는 법 문의드려요~

문자열 두개를 합치는 법 문의드려요~

QA

문자열 두개를 합치는 법 문의드려요~

본문

<?
$a = explode(",", "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20");
$b = explode(",", "사과,포도,딸기,수박");
$arr = array();
foreach($a as $k => $v) {
    if($k % 5 == 0) $arr[] = $b[$k / 5];
    $arr[] = $v;
}
echo implode(", ", $arr);
?>

 

이렇게 하면,

사과, 1, 2, 3, 4, 5, 포도, 6, 7, 8, 9, 10, 딸기, 11, 12, 13, 14, 15, 수박, 16, 17, 18, 19, 20

이렇게 5개 사이에 하나씩 들어가는데요.

 

사과,포도, 1, 2, 3, 4, 5, 딸기, 수박, 6, 7, 8, 9, 10

 

이렇게 5개 사이에 2개씩 넣으려면 어떻게해야 될까요?

이 질문에 댓글 쓰기 :

답변 4


<?
$array_num = 0;
$a = explode(",", "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20");
$b = explode(",", "apple,phodo,ddalgi,subak,gawie,gae,cat");
$c = array();
for($i=0; $i < count($b); $i++){    
  !$b[$array_num+1] ? array_push($c, $b[$array_num]) : array_push($c, $b[$array_num].', '.$b[$array_num+1]);  
  $array_num = $array_num + 2;
}

print_r($c);
$arr = array();
foreach($a as $k => $v) {  
    if($k % 5 == 0){
      if($c[$k / 5] !== ', '){
        $arr[] = $c[$k / 5];
      }
    } 
    $arr[] = $v;
}
echo '<br>';
echo implode(", ", $arr);
?>

 

이렇게 하시는 방법도 있습니다.

한개를 넣으셨다가 나중에 2개를 넣게되어야할지 3개를 넣게되어야할지

모르니 따로 배열로 담아서 foreach에서 공백이 들어가면

예외처리하게 조건문을 추가로 주었네요.

 

결과는 요렇게 나오네요


Array ( [0] => apple, phodo [1] => ddalgi, subak [2] => gawie, gae [3] => cat [4] => [5] => [6] => ) 
apple, phodo, 1, 2, 3, 4, 5, ddalgi, subak, 6, 7, 8, 9, 10, gawie, gae, 11, 12, 13, 14, 15, cat, 16, 17, 18, 19, 20

 

제가 저런쪽 작업을 마니 안해봐서 저도 테스트하며 작업했네요 

재밌었습니다.

아.. 덧붙혀서 저런 작업을 하다보면 구분자(콤마)가
중첩되 들어가서 두번일하게 되어 엄청 귀찮드라구요.

콤마만 들어가는경우 값이 없는 경우이니
for문에서 배열검사할때 홀수가 아닌 짝수번 배열검색하여
if문으로 배열을 다시 짤때 다르게 넣어주면 결과도 깔끔하지 않을까해서
저렇게 처리했네요.

숫자를 2나 3으로 바꾸면 2개씩 넣던가 3개씩 넣도록 수정이 가능할까요?
사과,포도, 1, 2, 3, 4, 5, 딸기, 수박, 6, 7, 8, 9, 10 이렇게나
사과,포도,딸기, 1, 2, 3, 4, 5, 수박,오이, 바나나, 6, 7, 8, 9, 10 이렇게요~


<?php
$a = explode(",", "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20");
$b = explode(",", "사과,포도,딸기,수박,참외");
$arr = array();
foreach($a as $k => $v) {
    if ($k % 5 == 0) {
        $idx = $k / 5;        
        $arr[] = $b[$idx];        
        $arr[] = $b[$idx + 1];
    }
    $arr[] = $v;
}
echo implode(", ", $arr);
?>

$a = explode(",", "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20");
$b = explode(",", "사과,포도,딸기,수박,참외");
$arr = array();
foreach($a as $k => $v) {
    if ($k % 5 == 0) {
        $idx = $k / 5;        
        $arr[] = $b[($idx*2)];        
        $arr[] = $b[($idx*2) + 1];
    }
    $arr[] = $v;
}
echo implode(", ", $arr);

이렇게 하셔야 할듯 합니다.

핵심은 5번째줄~ 9번째 까지 입니다.

05 $c = array();
06 for($i=0; $i < count($b); $i++){    
07   !$b[$array_num+1] ? array_push($c, $b[$array_num]) : array_push($c, $b[$array_num].', '.$b[$array_num+1]);  
08   $array_num = $array_num + 2;
09 }

 

1. 7번째줄 보시면 배열을 합칠때 조건문이 있는데요. 이 조건문은 2개 전용이라

[문장1] , [문장2] <-- 에서 문장 2가 없을때는 문장1만 배열에 넣게 하고 

문장2가 있으면 [문장1] , [문장2]로 문구를 만들어 배열에 넣습니다.

갯수가 바뀐다면 print_r로 찍어보시면서 이 조건문을 수정을 하셔야 할 것 같구요

 

$array_num은 배열의 인덱스값을 지정해 주는 별도의 기준값입니다.

이 0으로 시작해 배열을 다시만드는 반복문을 돌때

2개 기준이기 때문에 한번 반복마다 2씩 증가시켜요. 그러면 겹치는 인덱스가 없겠죠

이것도 증가값 조절해 가면서 찍어보고 테스트 해보시면 될것같아요

 

좋은하루되세요

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 343
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT