2017-08-14 66 views
-4

我有兩個數組,我需要根據它們的值進行組合。PHP根據它們的值組合2個數組

他們看起來像這樣:

第一:

Array 
(
    [8] => Array 
     (
      [AAA] => 1000 
     ) 

    [12] => Array 
     (
      [BBB] => 1000 
     ) 

    [14] => Array 
     (
      [CCC] => 10 
     ) 
} 

二:

Array 
(
    [CCC] => 5145 
    [AAA] => 451 
    [BBB] => 3020 
} 

我想這樣做是要經過兩個數組,比較其AAA,BBB,CCC值,如果他們是相同的創建第三個數組,看起來像這樣:

Array 
    (
     [8] => Array 
      (
       [AAA] => 1000, 
       [AAA_2] => 451 
      ) 

     [12] => Array 
      (
       [BBB] => 1000, 
       [BBB_2] => 3020 
      ) 

     [14] => Array 
      (
       [CCC] => 10, 
       [CCC_2] => 5145 
      ) 
    } 

關於如何做到這一點的任何想法?嘗試使用array_combine()沒有運氣。

+1

所以嘗試別的東西。例如簡單的「foreach」。 –

+1

在[所以]你應該嘗試**自己編寫代碼**。後** [做更多的研究](//meta.stackoverflow.com/questions/261592)**如果你有問題,你可以**發佈你已經嘗試**與清楚的解釋是什麼是'工作**並提供[** Minimal,Complete和Verifiable示例**](// stackoverflow.com/help/mcve)。我建議閱讀[問]一個好問題和[完美問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要參加[遊覽]並閱讀[this](// meta.stackoverflow.com/questions/347937/)**。 –

+0

使用'loop'迭代你的數組並創建一個新的輸出數組 – Narayan

回答

-1

試試這個,希望它有效。 (array)(「AAA」=> 1000),12 =>數組(「BBB」=> 1000),14 =>數組(「CCC」=> 10) $ second =數組(「CCC」=> 5145,「AAA」=> 451,「BBB」=> 3020);

的foreach($首先作爲$ FKEY => $ FVAL){

foreach($fVal as $k => $v){ 

    if(array_key_exists($k, $second)){ 
     $newKey = $k."_2"; 
     $first[$fKey][$newKey] = $v; 
    } 
} 

}

的print_r($第一);

+1

你所做的每一篇文章(至少今天)的格式都很差,不包含任何解釋。這些是張貼錯誤的答案。你需要改進所有的答案,然後再繼續亂扔垃圾。雖然會有人會在你身後清理,但你需要承擔一些責任並清理你自己的混亂。 – mickmackusa

0

我看起來你的代碼,並嘗試創建第三個數組,因爲你提到,它可以在我的網站上。請參考下面的代碼並檢查它們。

$first = Array('8' => Array('AAA' => 1000), 
       '12' => Array('BBB' => 1000), 
       '14' => Array('CCC' => 10)); 
$second = Array('CCC' => 5145, 
       'AAA' => 451, 
       'BBB' => 3020); 
$third = array(); 
foreach ($first as $key => $value) { 
    foreach($value as $k => $v){ 
     if(array_key_exists($k,$second)){ 
      $third[$key] = array($k => $v, $k.'_2' => $second[$k]); 
     } 
    } 
} 
echo '<pre>'; 
print_r($third); 
0

此任務只需要一個foreach循環,而不是兩個。 $first將是輸出數組。

代碼:(Demo

$first=[8=>["AAA"=>1000],12=>["BBB"=>1000],14=>["CCC"=>10]]; 
$second=["CCC"=>5145,"AAA"=>451,"BBB"=>3020]; 
foreach($first as &$a){ // modify $first subarrays by reference 
    $k=key($a); // temporarily store first element's key 
    if(isset($second[$k])){ // if key is found in $second 
     $a["{$k}_2"]=$second[$k]; // add assoc element to $first 
    } 
} 
var_export($first); // display updated $first array 

輸出:

array (
    8 => 
    array (
    'AAA' => 1000, 
    'AAA_2' => 451, 
), 
    12 => 
    array (
    'BBB' => 1000, 
    'BBB_2' => 3020, 
), 
    14 => 
    array (
    'CCC' => 10, 
    'CCC_2' => 5145, 
), 
)