이 포스트에서는 PHP에서 배열을 합치고 나누는 법을 설명합니다.
우선, 단순히 배열을 합치는 것은 array_merge() 함수 하나면 충분합니다. 아래 코드를 봅시다.
<?php
header("Content-Type: text/plain");
$South_Korea = array('서울경기','강원도','충청도','경상도','전라도');
$North_Korea = array('황해도','평안도','함경도');
print_r($South_Korea);
print_r($North_Korea);
$Unified_Korea = array_merge($South_Korea,$North_Korea);
print_r($Unified_Korea);
?>
이 코드의 실행 결과는 다음과 같습니다.
Array
(
[0] => 서울경기
[1] => 강원도
[2] => 충청도
[3] => 경상도
[4] => 전라도
)
Array
(
[0] => 황해도
[1] => 평안도
[2] => 함경도
)
Array
(
[0] => 서울경기
[1] => 강원도
[2] => 충청도
[3] => 경상도
[4] => 전라도
[5] => 황해도
[6] => 평안도
[7] => 함경도
)
이 경우는 단순히 앞뒤로 합친 경우입니다. 중간에 끼워넣거나 기존 배열을 잘라 새 배열로 배당하거나 할 때는 조금 차이가 있습니다. 이 경우 array_splice() 함수를 사용합니다. 다음 코드도 봅시다.
<?php
header("Content-Type: text/plain");
$foo = array('A','B','C','D','E','F','G');
$bar = array_splice($foo, 2, 3, array('X','Y','Z'));
print_r($foo);
print_r($bar);
?>
이 코드의 실행 결과는 다음과 같습니다.
Array
(
[0] => A
[1] => B
[2] => X
[3] => Y
[4] => Z
[5] => F
[6] => G
)
Array
(
[0] => C
[1] => D
[2] => E
)
이 코드는 배열 $foo에서 앞의 두 원소를 건너뛰고 세 번째 원소(2번 원소)부터 3개를 잘라내어 배열 $bar로 한 다음, 그 자리에 원소 'x','y','z'로 이루어진 배열을 집어넣는 것입니다. 떼어낼 원소 수와 새로 끼울 원소 수는 같지 않아도 됩니다.
참고로 위 코드에서 2 대신 -5를 집어넣어도 같은 결과가 나옵니다. 두 번째 인자를 음수 -n으로 주면 배열 끝에서부터 n번째에서 잘라내기가 시작됩니다.
다음 코드도 봅시다.
<?php
header("Content-Type: text/plain");
$foo = array('A','B','C','D','E','F','G');
array_splice($foo, 2, 3);
print_r($foo);
$foo = array('A','B','C','D','E','F','G');
array_splice($foo, 2, 0, array('X','Y','Z'));
print_r($foo);
?>
이 코드의 실행 결과는 다음과 같습니다.
Array
(
[0] => A
[1] => B
[2] => F
[3] => G
)
Array
(
[0] => A
[1] => B
[2] => X
[3] => Y
[4] => Z
[5] => C
[6] => D
[7] => E
[8] => F
[9] => G
)
5번 줄처럼 네 번째 인자를 주지 않으면, 기존 배열의 원소들을 들어낸 자리에 새로운 원소가 추가되지 않습니다. 또한, 9번 줄처럼 세 번째 인자를 0으로 주면, 기존 배열의 원소를 들어내지 않고 그 자리에 새로운 원소를 추가합니다.