2016-07-14 2 views
0

でそのキーに基づいて、私は彼らが次のようになりたいマージしたり...私は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 
     ) 

) 

を... 2つの配列を結合する方法

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

これは可能ですか?これまでならば、どのように....本当にありがとうございました

+0

が重複する可能性 - 内部の配列をマージする方法array](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

試してみてください。?元の配列が$a$bある場合

$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

は、このコードを実行すると、あなたが望む結果が$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

出力は、次のとおりです。[PHPの

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

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

) 
関連する問題