Warning: Undefined array key "mobile_dir" in /home/kagla/new-sir/old/common.php on line 315
php 배열내 중복된 값이 있다면 한개만 삭제?

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

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

QA

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

답변 4

본문

$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); 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,406
© SIRSOFT
현재 페이지 제일 처음으로