PHP에서 목록을 배열로 읽고 저장하기
공백으로 구분된 숫자 목록이 하나의 문자열로 주어졌을 때, 이를 개별 값으로 분리해 배열에 저장해야 하는 경우가 종종 있습니다. PHP에서는 for 루프를 사용해 직접 처리할 수 있으며, 내장 함수인 explode()를 활용하면 더욱 간단하게 해결할 수 있습니다.
방법 1: for 루프로 직접 파싱하기
문자열의 각 문자를 한 글자씩 검사하면서, 공백이 아닌 문자는 임시 변수에 이어 붙입니다. 공백을 만나면 그동안 모아둔 값을 배열에 저장하고 임시 변수를 초기화합니다. 마지막 값은 루프가 끝난 후 별도로 저장해야 한다는 점에 유의하세요.
<!DOCTYPE html>
<html>
<body>
<?php
$list = "10 20 30 40 50 60";
$arr = [];
$counter = 0;
$current = "";
for ($i = 0; $i < strlen($list); $i++) {
if ($list[$i] !== " ") {
$current .= $list[$i];
} else {
if ($current !== "") {
$arr[$counter++] = $current;
$current = "";
}
}
}
if ($current !== "") {
$arr[$counter++] = $current;
}
foreach ($arr as $t) {
echo $t, "<br>";
}
?>
</body>
</html>
출력 결과:
10 20 30 40 50 60
방법 2: explode() 함수 사용 (권장)
실무에서는 explode() 함수를 사용하는 것이 가장 간단하고 안전합니다. 지정한 구분자를 기준으로 문자열을 잘라 배열로 반환해 주기 때문에 코드가 훨씬 짧아지고 오류 발생 가능성도 줄어듭니다.
<?php
$list = "10 20 30 40 50 60";
$arr = explode(" ", $list);
print_r($arr);
?>
출력 결과:
Array
(
[0] => 10
[1] => 20
[2] => 30
[3] => 40
[4] => 50
[5] => 60
)
정리
- for 루프 방식은 문자열 파싱의 동작 원리를 학습하는 데 유용합니다.
- 실제 프로젝트에서는
explode(),preg_split()등의 내장 함수를 사용하는 것이 코드 가독성과 안정성 면에서 더 좋습니다.