2017-03-12 144 views
0

嗨,我試圖讓兩個數組元素具有相同的鍵合併到一起。Php在一個鍵中組合了兩個數組元素

array1 = array(0=>"1", 1=>"2", 2=>"3"); 
array2 = array(0=>"a", 1=>"b", 2=>"c"); 
foreach ($array1 as $origKey => &$subArray) 
    foreach ($array2[$origKey] as $key => $val) 
    $subArray[$key] = $val; 

的ouptut要求:

array(0=>"1a", 1=>"2b", 2=>"3c") 

有人可以幫我,好嗎?

+1

這可能有助於:http://stackoverflow.com/q/32061254/3933332 – Rizier123

+0

'的foreach($ ARRAY1爲$ origKey =>&$子陣列)$子陣列= $數組2 [$ origKey];' –

+0

。 @MarkBaker它的作品。非常感謝你! –

回答

0
<? 
$array1 = array(0=>"1", 1=>"2", 2=>"3"); 
$array2 = array(0=>"a", 1=>"b", 2=>"c"); 

foreach ($array1 as $origKey => &$subArray) 
    $new[] = $subArray.$array2[$origKey]; 


print_r($new); 
//Output: Array ([0] => 1a [1] => 2b [2] => 3c) 
0

在這裏你去:

<?php 

$array1 = array(0=>"1", 1=>"2", 2=>"3"); 
$array2 = array(0=>"a", 1=>"b", 2=>"c"); 

$sub = []; 
foreach ($array1 as $key => $value) { 
    array_push($sub, $value.$array2[$key]); 
} 

var_dump($sub); 

- >

array(3) { 
    [0]=> 
    string(2) "1a" 
    [1]=> 
    string(2) "2b" 
    [2]=> 
    string(2) "3c" 
} 
1

使用下面的函數值

function combineValues($a1, $a2){ 
    foreach ($a1 as $k => $v) 
     $r[$k] = $v . $a2[$k]; 
    return $r; 
} 
0
your this statement foreach ($array2[$origKey] as $key => $val) is wrong 
that part $array[$origkey] coz in foreach $key as $value this basically evaluates whole array so use this way .... 

<?php 
$array1 = array(0=>"1", 1=>"2", 2=>"3"); 
$array2 = array(0=>"a", 1=>"b", 2=>"c"); 
$array3 = array(); 
for($i=0 ;$i<3 ;$i++) 
{ 
    $array3[] = $array1[$i].$array2[$i]; 
} 
foreach($array3 as $merge) 
{ 
    echo $merge."<br>"; 
} 
?> 
0

讓利相結合的言歸正傳,這樣只會對任何lenghts的1個維數組工作:

$concatted_array = array(); // the new array 

// if the 2 arrays don't have te same lenght, get the largest array 
$max_array_length = (count($array1) > count($array2)) ? count($array1) : count($array1); 

// loop for the longest array 
for ($i=0; $i <$max_array_length ; $i++) { 

    if($i < count($array1) && $i < count($array2)) // if the element exist for both arrays 
    { 
    $concatted_array[$i] = $array1[$i].$array2[$i]; 

    } elseif($i < count($array1)) // if element only exists in $array1 
    { 
     $concatted_array[$i] = $array1[$i]; 

    } else // if element only exists in $array2 
    { 

     $concatted_array[$i] = $array2[$i]; 
    } 
} 

var_dump($concatted_array); 

這裏是輸出:

array (size=3) 
    0 => string '1a' (length=2) 
    1 => string '2b' (length=2) 
    2 => string '3c' (length=2) 

現在,這裏有一些提示,以防萬一你有錯誤用你寫的代碼:

  • 不要忘記$之前的變量。
  • foreach應該只用於數組或對象,所以不要做foreach ($array2[$origKey] as $key => $val)除非$array2[$origKey]是一個數組或對象本身。請訪問foreach documentation瞭解更多信息。
相關問題