2016-07-26 88 views
0

我在php中有兩個數組,現在我想把這兩個數組合併成如下。在php中組合兩個數組

$a1 = Array(
    'ansid4' => 4, 
    'ansid5' => 5, 
    'ansid6' => 6 
); 

$a2 = Array(
    'value' => 'demo', 
    'value2' => 'demo2' 
); 

所需的輸出:

$target = Array(
    4 => 'demo', 
    5 => 'demo2', 
    6 => Null 
); 

在此先感謝

+0

請看[array-count-values](http://php.net/manual/en/) function.array-count-values.php)和[array-merge](http://php.net/manual/en/function.array-merge.php) – dod29

+2

第二個數組無效,數組鍵必須是唯一的 – Ghost

回答

0
$resultArray = array(); 

while ($key = array_pop($arrayOne)) { 
    $resultArray[$key] = array_pop($arrayTwo); 
} 

,或者你可以做

$resultArray = array(); 

foreach ($arrayOne as $key) { 
    $resultArray[$key] = array_shift($arrayTwo); 
} 

這兩種解決方案的優點是它們都佔用一個或兩個陣列的缺點。 如果您在組合後仍然需要它們,您可以製作陣列的副本並讓其消耗。

0

看看array_combine 您可以發送到鍵和值的陣列的這一功能陣列,它返回ASSOC陣列

請注意,兩個數組必須具有相同數量的元素NTS。 如果你不能採取照顧,請嘗試使用array_pad

0
$targetArray = array('a'=>'','b'=>''); 
$sourceArray = array('a'=>array(1,2,3),'c'=>'c','d'=>'d'); 
$result = array_merge($targetArray, $sourceArray); 
$array_text = recurse_array($result); 
echo $array_text; 

function recurse_array($values){ 
    $content = ''; 
    if(is_array($values)){ 
     foreach($values as $key => $value){ 
      if(is_array($value)){ 
       $content.="$key<br />".recurse_array($value); 
      }else{ 
       $content.="$key = $value<br />"; 
      } 

     } 
    } 
    return $content; 
} 
0

你必須有相同數量的兩個數組中的元素,所以我們先從元素的計數和array_pad

if (count($a1) > count($a2)) 
{ 
    $a2 = array_pad1($a2, count($a1), NULL); 
} 
elseif (count($a1) < count($a2)) 
{ 
    $a1 = array_pad($a1, count($a2), NULL); 
} 

然後我們使用array_combine,這創造了新的陣列添加必要的NULL值。從這兩個數組中我們使用array_values的值。從第一個數組我們使用值作爲鍵,從第二個數組我們使用值作爲值:-)

$target = array_combine(array_values($a1), array_values($a2))