2017-09-29 26 views
1

で多次元配列から多次元配列を作る:私は現在、以下のことを持っている私はこの多次元配列持っているPHP

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

:私はに有効にする必要があり

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

を新しい配列が作成されますが、新しい配列の値は更新されません。

$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']; 
    } 
} 
+3

最初の配列の 'salesID'キーはどこにありますか?それはちょうど 'id 'であると思われますか? – Rasclatt

+0

申し訳ありませんが、私はそれを更新しました。 – glitchbox

答えて

1

あなたは以下のように(私はあなたの入力と期待出力のみ、あなたがをしようとしたものを、あなたのコードに基づいていないに基づいて回答を与えている)がそれを行うことができます: -

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

+0

ありがとう!それは完全に働いた。 – glitchbox

+0

@glitchboxあなたを助けてうれしい:) :) –