체크박스를 통해서 값을 받고 | 를 구분자로 배열로 저장하는 작업을 했다.
값을 저장하는 것 까지는 문제가 없는데, 값이 있는 경우만 불러오고 콤마로 깔끔하게 보여주는 방법을 고민해보았다.
예를 들어 아래와 같이 체크박스를 통해서 값을 받았다고하자.
좋아하는 과일을 선택하세요(중복선택가능)
□사과 □배 □포도 □복숭아 □망고
<input type="checkbox" name="fruit1" value="사과"> 사과
<input type="checkbox" name="fruit2" value="배"> 배
<input type="checkbox" name="fruit3" value="포도"> 포도
<input type="checkbox" name="fruit4" value="복숭아"> 복숭아
<input type="checkbox" name="fruit5" value="망고"> 망고
| 로 구분해 값을 각각 저장하는 경우에
$fruit = "$fruit1|$fruit2|$fruit3|$fruit4|$fruit5" 와 같은 형식으로 값을 저장하게 될 것이다.
좋아하는 과일을 선택하세요.(중복선택가능)
▣사과 □배 □포도 ▣ 복숭아 □망고
예를들어 사과와 복숭아만 선택한 경우, $fruit 의 저장된 값은 사과|||복숭아||
중간에 값이 없는 곳은 ||| 만 잔뜩 들어가게 된다.
이 배열에서 특정 몇번째에 있는 값을 불러올 때는 어렵지 않게 불러올수 있지만
저장된 배열 값을 그대로 순서대로 다시 보여줘야만 하는 경우에는 여러개 겹쳐있는 || 이 구분자들을 없애줘야한다.
1) $fruit 값의 맨 앞, 맨 뒤에 있는 |를 제거해준다.
$str = rtrim($str,'|');
$str = ltrim($str,'|');
2) 구분자( | ) 이 여러개 들어가 있는 것들을 제거하고 |로 변환한다. 입력받는 체크박스 갯수에 따라서 더 길어질 수도 있다. (약간의 노가다..)
$str = str_replace('||','|',str_replace('|||','',str_replace('||||','',$str)));
3) 원래의 배열 갯수를 구한다.
$str2 = explode('|' , $str);
$cnt = count($str2);
4) for 문을 통해 배열한다. 배열 뒤에는 콤마(,)로 구문하고 마지막 배열 값은 콤마 없이 마무리한다.
for ($i=0; $i<$cnt; $i++) {
if($i < $cnt - 1) { //마지막이 아닌것은 콤마를 찍어줌
echo trim($str2[$i]). ", ";
} else {
echo trim($str2[$i]); //마지막 값은 콤마를 찍지 않음
}
}
전체 코드
$str = $fruit;
$str = rtrim($str,'|'); //문자열 맨 앞 | 제거
$str = ltrim($str,'|'); //문자열 맨 뒤 | 제거
$str = str_replace('||','',str_replace('|||','',str_replace('||||','',str_replace('|||||','',$str)))); // 중복되는 | 제거
$str2 = explode('|' , $str);
$cnt = count($str2);
for ($i=0; $i<$cnt; $i++) {
if($i < $cnt - 1) {
echo trim($str2[$i]). ", "; //마지막이 아닌것은 콤마를 찍어줌
} else {
echo trim($str2[$i]); //마지막 값은 콤마를 찍지 않음
}
}
위와 같이 하면 결과값은!!
사과, 복숭아
'개발 > php' 카테고리의 다른 글
[php] Warning: Illegal string offset 'file' 오류수정 (2) | 2022.11.10 |
---|---|
[php] PHPExcel 엑셀로 데이터 다운받기 (2) | 2022.11.04 |
fullcalendar 이벤트 표기 안되는 오류 (Fatal error: Cannot redeclare class Event) (2) | 2022.08.14 |
[php] strpos(), strrpos(), in_array() 특정 문자열 검색하기 (6) | 2021.05.26 |
[php] sql 구문으로 테이블 값 가져오는 방법 (2) | 2021.03.21 |
[php] sql 쿼리 반복문으로 데이터를 불러오는 여러가지 방법 (for문, while문) (2) | 2021.02.08 |
[php] 그누보드 보안 SSL 적용 (https 강제 리다이렉션하기) (2) | 2021.02.08 |
[php] ajax를 활용하여 좋아요 버튼 만들기 (2) | 2021.01.14 |