2016-07-14 79 views
0

键我有2个数组,我想合并或结合他们...如何合并或合并2个阵列基于其在PHP

Array 
(
    [0] => Array 
     (
      [year] => 2015 
      [value] => 32 
     ) 

    [1] => Array 
     (
      [year] => 2016 
      [value] => 54 
     )  
) 

Array 
(
    [0] => Array 
     (
      [year] => 2015 
      [value] => 95 
     ) 

    [1] => Array 
     (
      [year] => 2016 
      [value] => 2068 
     ) 

) 

我希望他们看起来像这样...

Array(
    [2015]=>array(
     [0] => 32 
     [1] => 95 
    ) 
    [2016]=>array(
     [0] => 54 
     [1] => 2068 
    ) 
) 

这可能吗?如果有的话,怎么....感谢这么多

+0

[PHP的可能的复制 - 如何合并数组内数组](http://stackoverflow.com/questions/17041278/ph​​p-how-to-merge-arrays-inside-array) – Lekhnath

+1

请先试试看,并分享你的努力。我们在这里帮助对方学习,而不是做对方的工作。 – BeetleJuice

+1

您可能首先关心的是如何创建这2个数组,然后在该阶段创建它们,而不是稍后修复它们, – RiggsFolly

回答

2
$a = array(
    0 => array 
     (
      "year" => 2015, 
      "value" => 32 
     ), 
    1 => array 
     (
      "year" => 2016, 
      "value" => 54 
     ) 
); 

$b = array(
    0 => array 
     (
      "year" => 2015, 
      "value" => 300 
     ), 
    1 => array 
     (
      "year" => 2016, 
      "value" => 5400 
     ) 
); 

$c = array_merge($a,$b); 

$output = array(); 
foreach($c as $key=>$val) 
{ 
    $output[$val['year']][] = $val['value']; 
} 

echo '<pre>'; 
print_r($output); 
exit; 

试试这个代码..

+0

它的工作....非常感谢你... – user3082963

+0

@ user3082963你真的应该选择一个答案,如果它解决了你的问题。 – BeetleJuice

0

尝试:?

$newArr = array(); 
foreach($array1 as $key1=>$arr1) { 
    $newArr[$arr1['year']][] = $arr1['value']; 
    $newArr[$arr1['year']][] = $array2[$key]['value']; 
} 
+0

仅在两个数组的大小相同或配置相同时才起作用 –

+0

虽然此代码片段可能会解决这个问题,[包括解释](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要使用解释性注释来挤占代码,因为这会降低代码和解释的可读性! – FrankerZ

0

如果原始阵列$a$b,运行您需要将在$result

$sources = array_merge($a,$b); 
$result = []; 
foreach($sources as $data){ 
    $yr = $data['year']; 
    if(!isset($result[$yr])) $result[$yr]=[]; 
    $result[$yr][]=$data['value']; 
} 
此代码和结果

Live demo

0

你也可以做这样的事情,

<?php 
$test1 = [["year"=>2015,"value"=>32],["year"=>2016,"value"=>54]]; 
$test2 = [["year"=>2015,"value"=>95],["year"=>2016,"value"=>2068]]; 

$newarray=array(); 
foreach($test1 as $key1=>$value1){ 
    $temp = [$value1['value']]; 
    foreach($test2 as $key2=>$value2){ 
    if($value1['year']==$value2['year']){ 
    $temp[] = $value2['value']; 
    } 
    $newarray[$value1['year']] = $temp; 
    } 
} 

print_r($newarray); 
?> 

检查这里:https://eval.in/605323

输出为:

Array 
(
    [2015] => Array 
     (
      [0] => 32 
      [1] => 95 
     ) 

    [2016] => Array 
     (
      [0] => 54 
      [1] => 2068 
     ) 

)