亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在PHP中合并兩個不相等的多維數組?

如何在PHP中合并兩個不相等的多維數組?

PHP
叮當貓咪 2023-07-08 20:59:03
我有兩個數組,如 JS 小提琴中給出的多維數組。如果 Month1 值相同,我想按升序將其合并為一個,否則按原樣打印    $array1= [0] => Array            (                [month1] => January                [2020cs] => 84                [2020as] => 500                [2019cs] => 17                [2019as] => 500            )            [1] => Array            (                [month1] => February                [2020cs] => 54                [2020as] => 200                [2019cs] => 12                [2019as] => 1000            )            [2] => Array            (                [month1] => April                [2020cs] => 4                [2020as] => 100                [2019cs] => 12                [2019as] => 1400            )            [3] => Array            (                [month1] => November                [2020cs] => 0                [2020as] => 0                [2019cs] => 7                [2019as] => 200            )    )            $array2= [0] => Array            (                [month1] => January                [2020cr] => 13                [2020ar] => 300                [2019cr] => 0                [2019ar] => 0            )            [2] => Array            (                [month1] => March                [2020cr] => 1                [2020ar] => 100                [2019cr] => 0                [2019ar] => 0            )            [3] => Array            (                [month1] => November                [2020cr] => 0                [2020ar] => 0                [2019cr] => 1                [2019ar] => 800            )            [4] => Array            (                [month1] => December                [2020cr] => 0                [2020ar] => 0                [2019cr] => 2                [2019ar] => 500            )        )我也使用過 array_merge_recursive() 。它也不起作用。誰能幫我嗎?提前致謝。
查看完整描述

1 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

以下邏輯可能會幫助您:

  1. 為每個頂級數組鍵指定月份名稱 ( rekey())

  2. 合并兩個數組

  3. 對結果集進行排序 ( $result)

<?php


// top-level array from indexed to associative (name of month)

$array1 = rekey($array1);

$array2 = rekey($array2);


function rekey(array $arr = []): array

{

    foreach ($arr as $key => $record) {

        $arr[$record['month1']] = $arr[$key]; // indexed to name of month

        unset($arr[$key]);

    }

    return $arr;

}

// run the merge

$result = array_merge_recursive($array1, $array2);


// clean up double entries key 'month1'

foreach($result as $key => &$value) {

    if(is_array($value['month1'])) $value['month1'] = $value['month1'][0];

}


// prepare result set for sorting

$months = ['January', 'February', 'March', 'April', 'May', 'June', 'July',

           'August', 'September', 'October', 'November', 'December'];

foreach($result as $key0 => $value0) {

    foreach($months as $key1 => $value1) {

        if($key0 === $value1) {

            $result[$key1] = $result[$key0]; // set index based on month 0-11

            unset($result[$key0]);

        }

    }

}

ksort($result); // sort

$result = array_values($result); // top-level array back to sequential index

工作演示


查看完整回答
反對 回復 2023-07-08
  • 1 回答
  • 0 關注
  • 141 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號