2017-08-14 67 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, 
), 
)