php 배열내 중복된 값이 있다면 한개만 삭제?

php 배열내 중복된 값이 있다면 한개만 삭제?

QA

php 배열내 중복된 값이 있다면 한개만 삭제?

본문

$test = "서울,대구,부산,대구,부산,경기";

 

이렇게 되어있습니다

 

위 변수값에서 _POST 값이 대구 일경우

 

$test = str_replace($_POST[대구],"", $test);

 

이렇게 되면 $test 내 모든 대구가 삭제 되는데요..

 

$test 변수 내에서 대구 한개값만  삭제하려고 하는데.. 방법이 없을까요???

 

이 질문에 댓글 쓰기 :

답변 4

array_unique($array); //중복제거

 

 예) $arr = array_unique($array);

 

위 와 같이 하면 되고요~~ 해결 되셨으면 채택 부탁드려요 

아.

대구가 두개 있기 때문에 그 중 대구를 한개만 삭제 하고 다른 한개는 그냥 두고 싶다는 뜻이네요.

$test = str_replace($_POST[대구],"", $test);
$test = str_replace(",,",",", $test);
$test.= ",".$_POST[대구];

이렇게 하시면 될것 같은데요.

$str = '서울,대구,부산,대구,부산,경기';
 

$apos = stripos($str, "대구");
$tmp = substr( $str, 0, $apos);
$tmpa = substr($str,$apos);
$bpos = stripos($tmpa, ",");
$tmpb = substr($tmpa, $bpos + 1);

$result = $tmp . $tmpb;
echo( $result );


위 와 같이 해도 될 것 같아요

의도하시는 것을 정확하게 인지한 것인지 확실치는 않은데요.. 아래와 같은 방법도 고려를 해보시기 바랍니다.

 


<?php
$str = '서울,대구,부산,대구,부산,경기';
 
$haystack = explode(',', $str);
 
$niddle = '대구';
 
$count = 0;
 
foreach($haystack as $value) {
    if($value == $niddle)
        $count++;
}
 
if($count > 1)
    $result = array_unique($haystack);
else
    $result = $haystack;
 
echo implode(',', $result);
?> 

echo preg_replace("/$city,|,$city$/",'',$test,1); 

그누하마님  슈와이님이 올려주신 정규식 표현 정말 좋네요.

이것에 의미를 알고 싶으시면
http://sir.co.kr/bbs/board.php?bo_table=pg_tip&wr_id=14153

여기를 참고하세요.

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

회원로그인

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