IT/PHP
[PHP] 배열을 문자열로 나열(문자열 끝에서 n번째 버리기) - substr(), mb_substr()
Remily
2023. 6. 15. 18:29
반응형
서론
배열에 든 변수를 쿼리에 쓰기 위해 하나의 문자열로 가공하거나
배열에 든 값을 ,
로 구분하여 문장으로 나열하는 경우가 의외로 있습니다.
하지만 맨날 햇갈려서 다시 검색하고를 반복하므로... 포스팅을 작성합니당~
배열을 문자열로 나열(문자열 끝에서 n번째 버리기)
배열을 문자열로 나열하려면 반복문으로 배열에 든 값을 문자열 변수에 추가해주고
끝에 ,
를 추가해 구분해주면 됩니다.
단, 맨 마지막의 ,
는 없어야 하니까 이때 substr()
또는 mb_substr()
을 써줍니다.
$_string = '';
foreach($array as $key => $val){
$_string .= $val.", ";
}
$string = substr($_string, 0, -2);
$query = "SELECT * FROM testTable WHERE `변수` IN (".$string.")";
// 이런식으로 배열에 든 변수를 쿼리 조건문으로 만들때 씁니다!
이처럼 일반 배열이라면 substr()
만 써도 문제가 없습니다.
하지만 mysqli_fetch_assoc
또는 mysqli_fetch_array
같이 DB를 조회할 때
가져오는 배열에 한글값이 있으면 인코딩 문제로 문자가 깨지는 경우가 빈번합니다.
이때는 mb_substr()
을 써줍니다.
$query = "SELECT * FROM testTable";
$result = mysqli_query($db_connect, $query);
$array = array();
while($row = mysqli_fetch_assoc($result)){
$array[] = $row;
}
$_string = '';
foreach($array as $key => $val){
$_string .= $val.", ";
}
$string = mb_substr($_string, 0, -2, "UTF-8");
// 이런식으로 조회한 값(한글)을 문자열로 나열할 때 씁니다!
반응형