簡體   English   中英

在 php 中從多維數組創建多維數組

[英]Make a Multidimensional Array from a Multidimensional Array in php

我有這個多維數組:

$sales = Array (
[0] => Array (
    [salesID] => 1
    [price] => 50
    [user_first] => Jane
    [user_last] => Doe
)
[1] => Array (
    [salesID] => 2
    [price] => 250
    [user_first] => John
    [user_last] => Smith
)
[2] => Array (
    [salesID] => 1
    [price] => 50
    [user_first] => Jane
    [user_last] => Doe
)
);

我需要變成:

$sales = Array(
[2] => Array (
    [Name] => John Smith
    [Sales] => 250
    [Signups] => 1
)
[1] => Array (
    [Name] => Jane Doe
    [Sales] => 100
    [Signups] => 2
)
);

我目前有以下內容將創建新數組,但它不會更新新數組中的值。

$leader_board = array();
foreach ($sales as $index => $row) {
    if (!in_array($row['salesID'], $leader_board)) {
        $new_row = array('Name' => $row['user_first'] . ' ' . $row['user_last'], 'SignUps' => 1, 'Sales' => $row['price']);
        $leader_board[$row['salesID']] = $new_row;
    } else {
        $leader_board[$row['salesID']]['SignUps'] += 1;
        $leader_board[$row['salesID']]['Sales'] += $row['price'];
    }
}

您可以像下面這樣做(我僅根據您的輸入和預期輸出給出答案而不是根據您嘗試的代碼):-

$final_array = array();

foreach($sales as $sale){
  $final_array[$sale['id']]['Name'] = $sale['user_first']." ".$sale['user_last'];
  $final_array[$sale['id']]['Sales'] = (isset($final_array[$sale['id']]['Sales'])) ? $final_array[$sale['id']]['Sales']+ $sale['price'] : $sale['price'];
  $final_array[$sale['id']]['Signups'] = (isset($final_array[$sale['id']]['Signups'])) ? $final_array[$sale['id']]['Signups']+ 1 : 1;
}
krsort($final_array);// Sort array by key in reverse order
print_r($final_array);

輸出:- https://eval.in/870767

參考:- krsort()

暫無
暫無

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

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