코딩짜는 일상

[PHP] 배열을 문자열로 나열(문자열 끝에서 n번째 버리기) - substr(), mb_substr() 본문

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");
// 이런식으로 조회한 값(한글)을 문자열로 나열할 때 씁니다!
반응형