개발 꿀팁/PHP

php 배열 병합 및 키 값 보존 방법

Jammie 2022. 7. 15. 14:11
반응형

php는 어레이를 병합하며 일반적으로 array_merge 방법을 사용한다.

array_merge - 하나 이상의 배열 병합

array array_merge ( array $array1 [, array $... ] )

array_merge는 하나 이상의 배열의 셀을 병합하여 하나의 배열의 값을 이전 배열의 뒤에 붙여 결과적인 배열로 되돌립니다.

입력한 배열에 문자열 키 이름이 같으면 키 이름 뒤에 있는 값이 이전 값을 덮어씁니다.배열에 숫자 키 이름이 포함되어 있으면, 뒤에 있는 것은 원래 이름을 덮어쓰지 않습니다.값이 아니라 뒤에 붙는다.

배열이 하나만 주어지고 배열이 숫자 인덱스가 되면 키 이름은 연속적으로 다시 인덱싱됩니다.


예1. 배열은 문자열 키 이름을 사용하고, 같은 키 이름은 뒤에 덮어씁니다

<?php
$arr1 = array('name'=>'fdipzone');
$arr2 = array('name'=>'terry');

$result = array_merge($arr1, $arr2);

print_r($result);
?>

출력:

Array
(
    [name] => terry
)

예 2, 배열은 숫자 키 이름을 사용합니다. 키 이름이 같으면 덮어쓰지 않고, 다시 색인화됩니다

<?php
$arr1 = array(0=>'fdipzone',1=>'terry');
$arr2 = array(0=>'php',1=>'python');

$result = array_merge($arr1, $arr2);

print_r($result);
?>

출력:

Array
(
    [0] => fdipzone
    [1] => terry
    [2] => php
    [3] => python
)

업무상의 필요에 따라 설문지의 두 부분 선택 문항에 대한 답을 합쳐서 각 부분마다 배열(key=>value), key 제목, value를 답으로 하고 두 부분 문항은 중복되지 않는다.

array_merge를 사용하여 두 개의 답을 병합합니다

<?php
$form_data1 = array(11=>'A',12=>'B',13=>'C',14=>'D');
$form_data2 = array(25=>'B',26=>'A',27=>'D',28=>'C');

$result = array_merge($form_data1, $form_data2);

print_r($result);
?>

출력:

Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => D
    [4] => B
    [5] => A
    [6] => D
    [7] => C
)

array_merge를 사용하여 병합하면 키(key)가 숫자이기 때문에 키네임이 다시 색인화되므로 키네임을 유지할 수 없습니다.


배열들을 병합하고 키 값을 유지하는 방법:

<?php
$form_data1 = array(11=>'A',12=>'B',13=>'C',14=>'D');
$form_data2 = array(25=>'B',26=>'A',27=>'D',28=>'C');

$result = $form_data1 + $form_data2;

print_r($result);
?>

출력:

Array
(
    [11] => A
    [12] => B
    [13] => C
    [14] => D
    [25] => B
    [26] => A
    [27] => D
    [28] => C
)

"+" 연산을 사용하면 배열의 키 값을 유지할 수 있습니다. 배열에 동일한 키 값이 포함되어 있으면 앞의 키 값(앞의 우선 순위)

반응형