채택완료

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

2014-09-19 (금) 15:09:36 7,845

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

이렇게 되어있습니다

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

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

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

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

답변 4개 / 댓글 7개

채택된 답변
+20 포인트

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

 예) $arr = array_unique($array);

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

답변에 대한 댓글 4개

중복 값도 모두 출력이 되야하며 중복값중 POST 로 넘어온 ..한개만 삭제해야 합니다 ㅜㅜ
2014-09-19 (금) 18:32:22
아.

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

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

이렇게 하시면 될것 같은데요.
2014-09-19 (금) 18:49:41
$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 );


위 와 같이 해도 될 것 같아요
답변에 슈와이님의 답글에대한 해설까지 해주셔서 정말 감사드립니다 ^^
2014-09-19 (금) 23:29:55

흠.. 여러 방법들이 있군요^^

정규식을 제대로 알면 편할것 같은데...ㅠㅠ

답변주신 모든분들 감사드립니다 ^^ 

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

답변에 대한 댓글 2개

2014-09-19 (금) 19:32:17
그누하마님 슈와이님이 올려주신 정규식 표현 정말 좋네요.

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

여기를 참고하세요.
답변 감사드립니다 ^^

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

Copy
<?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);?>

답변에 대한 댓글 1개

답변 감사드립니다 ^^ 바쁘신데 답변까지 달아주시고 ㅎ
foreach 문을 사용하는 방법도 있군요 공부해 보겠습니다 ^^

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