1. 程式人生 > >php合併陣列並保留鍵值的方法

php合併陣列並保留鍵值的方法

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
)


使用 “+” 運算符合並陣列,可以保留陣列的鍵值,如果合併的陣列中含有相同的鍵值,後面的不會覆蓋前面的鍵值(前面的優先)。