2013-06-23 131 views
2

使用PHP我需要2個陣列合併(相等的長度成一個關聯數組)這裏是從我的當前數據集的摘錄:PHP合併2個陣列成一個關聯數組

[1] => Array 
    (
     [0] => C28 
     [1] => C29 
    ) 

[2] => Array 
    (
     [0] => 1AB010050093 
     [1] => 1AB008140029 
    ) 

兩個元件[1]和[2]實際上是很多長於2個子元素(就像我說的,這是一個摘錄)。

該協議是,「C28」第一陣列中對應於「1AB010050093」第二陣列中,等等...我需要的結果是創建一個新的關聯數組,看起來像這樣:

[1] => Array  
    (
     ['ref'] => C28 
     ['part'] => 1AB010050093 
    ) 
[2] => Array 
    (
     ['ref'] => C29 
     ['part'] => 1AB008140029 
    ) 

等等...

+0

你需要將它們組合成一個多維數組,或者你想要得到的結果是2個獨立的一維數組? – Revent

+2

你有什麼試過的?這可以在大約4行代碼中完成。 – Danack

回答

4

如果你願意與一個陣列結構這樣的妥協:

array(
    'C28' => '1AB010050093', 
    'C29' => '1AB008140029' 
); 

然後你可以使用array_combine()Codepad Demo):

array_combine($refNumbers, $partIds); 

否則,你需要使用foreach(Codepad Demo):

$combined = array(); 

foreach($refNumbers as $index => $refNumber) { 
    if(!array_key_exists($index, $partIds)) { 
     throw OutOfBoundsException(); 
    } 

    $combined[] = array(
     'ref' => $refNumber, 
     'part' => $partIds[$index] 
    ); 
} 
+0

我想我大概可以使用第一個數組結構,並使用組合,謝謝 – sadmicrowave

+0

@sadmicrowave從長遠來看,它可能並不重要,'array_combine()'也會稍微快一點,因爲它是內部的。 –

0

如果你使用PHP 5.5以上,有一個叫array_column()新方法,這將獲取特定列中的所有值。這可能會被使用,雖然我認爲只是一個簡單的foreach循環可能仍然是你最好的選擇。

0

如何:

$arr1 = array(
    0 => 'C28', 
    1 => 'C29', 
); 

$arr2 = array(
    0 => '1AB010050093', 
    1 => '1AB008140029', 
); 
$result = array(); 
for ($i=0; $i<count($arr1); $i++) { 
    $result[] = array('ref' => $arr1[$i], 'part' => $arr2[$i]); 
} 
print_r($result); 

ouptut:

[1] => Array 
    (
     [0] => C28 
     [1] => C29 
    ) 

[2] => Array 
    (
     [0] => 1AB010050093 
     [1] => 1AB008140029 
    )