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

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

將值添加到 PHP 中第二個數組中每個匹配 ID 的第一個數組

將值添加到 PHP 中第二個數組中每個匹配 ID 的第一個數組

PHP
狐的傳說 2021-08-27 09:46:48
我有兩個這樣的數組:數組1$array1 = Array(    0 => Array        (            'ID' => 101,            'Code' => 1075,            'Date' => '2012-03-03 17:13:12.433'        ),    1 => Array        (            'ID' => 103,            'Code' => 175,            'Date' => '2012-09-05 20:30:02.217'        ),    2 => Array        (            'ID' => 109,            'Code' => 178,            'Date' => '2012-07-05 20:30:02.217'        ));陣列2$array2 = Array(    0 => Array        (            'Amount' => 1234,            'ID' => 101        ),    1 => Array        (            'Amount' => 5656,            'ID' => 101        ),    2 => Array        (            'Amount' => 1342,            'ID' => 103        ),    3 => Array        (            'Amount' => 0,            'ID' => 0        ));我正在使用下面的代碼對兩個數組執行連接:$arr2 = array_column($array2, "ID");$finalArray = array();foreach($array1 as $arr){    $key = array_search($arr['ID'], $arr2);    if($key ===false){        $key = array_search(0, $arr2);    }    unset($array2[$key]['ID']);    $finalArray[] =     array_merge($arr,$array2[$key]);}print_r($finalArray);但是因為在array2 中有兩個 ID 為 101 的條目,但上面的代碼只采用匹配 ID 的第一個匹配項。預期的輸出是:期望輸出   Array(    [0] => Array        (            [ID] => 101            [Code] => 1075            [Date] => 2012-03-03 17:13:12.433            [Amount] => 1234 //amount for first entry of ID 101        )    [1] => Array        (            [ID] => 101            [Code] => 1075            [Date] => 2012-03-03 17:13:12.433            [Amount] => 5656//amount for second entry of ID 101        )    [2] => Array        (            [ID] => 103            [Code] => 175            [Date] => 2012-09-05 20:30:02.217            [Amount] => 1342        )    [3] => Array        (            [ID] => 109            [Code] => 178            [Date] => 2012-07-05 20:30:02.217            [Amount] => 0        ))我無法弄清楚要使用什么循環。代碼應該為 array2 的每個匹配 ID 添加行。如何修改我當前的代碼,以便它為我提供所需的輸出?
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

$arr2 = array_column($array2, "ID");


$finalArray = array();

foreach($array1 as $arr){


    //Get the index of ID which exist in array2. And store in search variable.

    $search = array_keys($arr2, $arr['ID']);


    if(!$search){

        //If ID not exit in array-2, get the index of that ID and store in search variable. 

         $key = array_search(0, $arr2);

         $search[0] = $key;

         unset($array2[$key]['ID']);

    }


    //Fetch search item and merge.

    foreach($search as $value){

        $finalArray[] =  array_merge($arr,$array2[$value]);

    }

}


echo "<pre>";

print_r($finalArray);


查看完整回答
反對 回復 2021-08-27
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

使結果數組成為以 ID 為鍵的關聯數組。您可以將第一個數組的元素復制到結果中,然后添加第二個數組中的數量。


$finalResult = [];

foreach ($array1 as $arr) {

    $finalResult[$arr['ID']] = $arr;

}

foreach ($array2 as $row) {

    $id = $row['ID'];

    unset($row['ID']);

    foreach ($row as $col => $value) {

        if (empty($finalResult[$id][$col])) {

            $finalResult[$id][$col] = $value;

        } else {

            $finalResult[$id][$col] += $value;

        }

    }

}


查看完整回答
反對 回復 2021-08-27
  • 2 回答
  • 0 關注
  • 200 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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