이 포스트에서는 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으로 주면, 기존 배열의 원소를 들어내지 않고 그 자리에 새로운 원소를 추가합니다.