[PHP] 배열의 요소 삭제 & 치환 & 연결과 분리, 중복제거 (array_merge, array_combine, array_unique 등)
● 배열의 요소 삭제
: array_splice()를 사용해 배열에서 요소를 삭제할수있습니다.
첫번째 인수인 배열 $myArray에서 $start로 지정한 위치부터 $length에서 지정한 개수만큼 요소를 삭제합니다.
$lengh를 생략하면 초깃값이 0이 되므로 한 개도 삭제되지 않습니다.
$start를 음수로 하면 뒤에서부터 센 위치가 됩니다. (아래 예제를 통해 추가 설명해드리겠습니다.)
$myArray에 인덱스 배열을 a~e까지 대입해줍니다.
array_splice함수에 첫번쨰 인자에 해당 배열을 입력해주고, 두번째 인자에 삭제될 인덱스번호를 넣어줍니다.
1,2를 넣어줬으므로, "b", "c"가 삭제됩니다. 삭제된 값은 $removed배열에 대입됩니다.
출력 결과는 인수로 전달한 $myArray에서 두개가 삭제되어 a,d,e의 3개의 인자값들이 출력되고,
$removed배열에는 삭제된 값 b,c가 대입됩니다.
● 배열의 맨 앞/ 뒤 값 꺼내기
: array_shift()는 배열의 맨 앞의 값을 꺼내고 array_pop()은 배열의 맨 뒤의 값을 꺼내는 배열 함수입니다.
이 두개의 함수도 array_splice()처럼 인수로 전달한 배열 $myArray를 직접 조작해 값을 삭제하므로 주의하시길 바랍니다. 값을 제거하면 값의 배열 인덱스 번호는 0부터 초기화합니다.
array_shift()함수를 통해 맨앞에있는 배열인 0인덱스값을 꺼내서 $removed변수에 대입해줬습니다.
만약에 반대로 array_pop()함수를 사용하면 맨뒤에있는 값인 d가 $removed변수에 대입됩니다.
● 배열의 요소를 치환/삽입하기
: array_splice에서 네번째 인수인 $replacement를 지정하면 요소를 치환할 수 있습니다.
다음형식으로 설명하면 배열 $myArray에서 $start 위치부터 $length에서 지정한 개수만큼 요소를 삭제하고, 그것을 $replacement 배열로 반환합니다. $length를 0으로 지정하면 한 개도 삭제되지않으므로 $start위치에 요소가 삽입됩니다.
$myArray의 인덱스번호 1부터 세개가 삭제되고 대시 $replace의 ["X","Y","Z"]가 치환되어 들어갑니다.
그 결과 $myArray는 ["a","X","Y","Z","e"]가 되고, $removed에는 삭제된 ["b", "c", "d"]가 들어갑니다.
그렇게 출력해보면 위와같이 출력됩니다.
● 배열과 배열 연결하기
: 배열과 배열을 연결하는 방법은 여러가지가 있지만, 각각 결과가 다르므로 차이를 아래예제를 통해 보여드리겠습니다.
+연산자로 연결하기
배열a와 배열b처럼 + 연산자를 사용해서 연결하면 $a보다 $b가 배열의 요소개수가 많으므로, $a배열 갯수만큼
들어가고, $b의 배열의 값이 그뒤로 추가되서 연결됩니다.
array_marge()로 연결하기
$a,$b,$c에 각각 들어있는 배열을 모두 array_merge 내장함수를 통해서 배열을 합쳐줍니다.
합친 배열을 $result 변수에 담아서 출력해봅니다.
array_marge_recursive()로 연결하기
array_merge_recursive()도 배열을 연결하는 함수입니다. array_merge()와 비슷하지만, 중복 키가 있을경우, 연결 방법이 다릅니다.
array_merge()는 중복된 키가 있을때 나중의 배열 값으로 덮어쓰지만 array_merge_revursive()는 중복된 키 값을 다중 배열로 만들어 모든 키값을 남깁니다.
$a와 $b를 각각 배열에 담았지만, 현재 b의 키값이 중복됩니다. 중복된 키인 b의 값은 [2,40]이 되고 두개 값이 배열로 유지됩니다.
● 배열 두개를 사용해 연관 배열 만들기
: array_combine(keys,values)를 사용하면 배열 keys를 키, 배열 values를 값으로 한 연관 배열을 만들수있습니다.
현재 $a와 $b를 각각 배열로 만든뒤, array_combine함수를 통해 키값으로 사용할 배열인 $a를 첫번쨰 파라미터로 넘기고, 값으로 사용할
배열인 $b를 두번째 파라미터로 넣어줍니다. $result변수에 담은뒤, 출력해줍니다.
● 배열에서 중복된 값 제거하기
: array_unique()를 사용하면 배열에서 중복된 값을 제거할수있습니다.
$a,$b,$c를 각각 배열을 만들어줍니다.
3개의 배열모두 red라는 값을 가지고있고 그냥 array_merge()함수를 사용해 합치면 중복된 값도 그냥 합쳐줍니다.
하지만, 중복된 값을 제거하고 합치고싶다면 array_unique()함수를 사용하면 red가 모두 중복되므로 제거되고 합쳐줍니다.
● 배열 잘라내기
: array_slice()를 사용하면 배열을 잘라내고 세 배열을 만들수있습니다.
우선 $myArray에 배열을 만들어줍니다.
$slice1에는 0인자~3인자까지 값을 잘라서 대입해줍니다.
$slice2에는 3인자~5인자까지 값을 잘라서 대입해줍니다.
$silce3에는 마지막부터 3개의 값을 잘라서 대입해줍니다.
모두 출력해보면 위와같이 출력됩니다.
( + 만약에 잘라낸후, 인덱스 번로를 초기화 하기않으러면 array_slice()함수에 마지막 4번째 파라미터로 true를 추가합니다. )