2017-12-01 7 views
0

に表示し、私は以下のような構造を有し、この配列$sales持っている:それは何スプリットヶ月間の売上高とテーブル

array(627) (

[0] => array(4) (
    [id]=> (int) 1 
    [name] => (string) Tesla 
    [total]=> (string) 24 
    [month] => (string) 4 
) 

[1] => array(4) (
    [id]=> (int) 1 
    [name] => (string) Tesla 
    [total]=> (string) 18 
    [month] => (string) 5 


[2] => array(4) (
    [id]=> (int) 1 
    [name] => (string) Tesla 
    [total]=> (string) 18 
    [month] => (string) 6 

[3] => array(4) (
    [id]=> (int) 2 
    [name] => (string) Audi 
    [total]=> (string) 16 
    [month] => (string) 4 
) 

[4] => array(4) (
    [id]=> (int) 2 
    [name] => (string) Audi 
    [total]=> (string) 18 
    [month] => (string) 5 

を、それは車の種類ごとに、各月の売上情報を格納しています。いくつかの月は売り上げがないので空白になります。私が何をしたいか は、以下のような車とディスプレイ販売の各タイプをループしている:

Car  Jan. Feb. Mar. Apr. May. Jun. Jul, Aug. Sept. Oct. Nov. Dec 
Tesla 0 0 0 24 18 18 0 0  0 0 0  0 
Audi  0 0 0 16 18 0 0 0  0 0 0  0 

私は明確なアイデアを持っていないとして、私はこれに近づく途中でいくつかの助けをいただければ幸いです。あなたが正しい方向に私を向けることができれば、素晴らしいことでしょう。

+0

どのような出力が必要ですか? HTML? – Joulss

+0

@Joulssはい、テーブルに表示する必要があります。 –

+0

LINQ for PHPのようなものを使用してください:https://github.com/Athari/YaLinqoそれは非常に簡単にする必要があります。 –

答えて

0

これは基本的に十分taksのように思えるが、いくつかのforeach文で解決すべき:

$result = []; 
foreach($sales as $sale) { 
    if(!isset($result[$sale['name']])) 
     $result[$sale['name']] = []; 

    if(!isset($result[$sale['name']][$sale['month']])) 
     $result[$sale['name']][$sale['month']] = $sale['total']; 
    else 
     $result[$sale['name']][$sale['month']] += $sale['total']; 
} 

foreach($result as $model => $months) { 
    for($month = 0; $month < 12; $month++) { // assuming that January is 0 
     $total = ($months[$month] ?? 0); 
    } 
} 

は、オペレータ ??を参照してください。

+0

ありがとうございます。これは売り上げがない月を0に設定することを解決しませんが、私の闘いがあります。 –

+0

これで問題は解決しましたか? – Valdrinit

+0

ちょっと複雑ですが、$結果配列は私に車の名前と総売上高のみを与えます。結果の配列が名前、月、そして合計売り上げになるのは素晴らしいことです。私は最初のループで月が欠けている。申し訳ありませんが、私はこれにはかなり新しく、それは従うのが難しいです。 –

0

おそらく私の答えは馬鹿ですが、私は配列の代わりにSQLデータベースを使用します。柔軟性があり、サーバーに数学をさせることができます。

関連する問題