簡體   English   中英

如何基於PHP中的鍵合並或合並2個數組

[英]How to merge or combine 2 arrays based on their keys in php

我有2個數組,我想合並或合並它們...

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
    )
)

這可能嗎? 如果有的話,如何?....非常感謝

 $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;

試試這個代碼。

嘗試:

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

如果原始數組為$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'];
}

現場演示

您也可以這樣做

<?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
        )

)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM