2

重複の可能性:
多次元配列を使用した SUM による php グループ

私は卸売会社のショッピングカートの作成に取り組んでいます。また、後で請求書も作成します。同じロジックです。

まず、paket (パッケージ) * paket adeti (パッケージの数量) * fiyatı (価格)を掛けて、リストの最後に書きました。今、私は付加価値税を計算する必要があります。主な問題は、これまで正確に付加価値税の比率がわからないことです。

3 つの異なるバット比率が存在する可能性があります。(お客様が選択された商品によります)

私はバットの配列を作りました

$vats[] = array($row['vat'], $row['wholesaleprice'] - $wholesaleprice);

結果はこんな感じ

Array ( 
[0] => Array ( [0] => 18 [1] => 1,07 ) 
[1] => Array ( [0] =>  8 [1] => 0,44 ) 
[2] => Array ( [0] =>  8 [1] => 0,67 ) 
[3] => Array ( [0] => 18 [1] => 0,55 ) 
[4] => Array ( [0] => 18 [1] => 0,19 ) 
[5] => Array ( [0] =>  8 [1] => 0,48 ) 
[6] => Array ( [0] => 18 [1] => 2,59 ) 
[7] => Array ( [0] =>  8 [1] => 0,15 ) 
[8] => Array ( [0] => 18 [1] => 12,97 ) 
)

バットグループを比率で合計する必要があります...

そして、私は次のように表示したい

付加価値税 (%18) 136,26 TL 付加価値税 (%8) 16,90 TL 付加価値税 (%1) 9,28 TL

ショートカットでそれを行うにはどうすればよいですか。配列関数を確認しました。しかし、私は有用なものを見つけることができませんでした。

ショッピングカート: http://i.stack.imgur.com/DDsCq.png

4

3 に答える 3

2

次のようなことを試してください:

<?php

$data = Array ( 
    Array ( 0 => '18', 1 => '1,07' ),
    Array ( 0 => '8', 1 => '0,44' ),
    Array ( 0 => '8', 1 => '0,67' ),
    Array ( 0 => '18', 1 => '0,55' ), 
    Array ( 0 => '18', 1 => '0,19' ),
    Array ( 0 => '8', 1 => '0,48' ),
    Array ( 0 => '18', 1 => '2,59' ),
    Array ( 0 => '8', 1 => '0,15' ),
    Array ( 0 => '18', 1 => '12,97' ) 
);

// predefine array
$data_summ = array();
foreach ( $data as $value ) {
    $data_summ[ $value[0] ] = 0;
}

foreach ( $data as $list ) {
    $number = str_replace( ",", ".", $list[1] ) * 1;
    $data_summ[ $list[0] ] += (float)$number;
}

?>

の出力$data_summ:

Array
(
    [8] => 1.74
    [18] => 17.37
)

私があなたを正しく理解していれば。

于 2012-07-24T14:49:30.043 に答える
0

気をつけて!前回 VAT を扱ったときは、請求書の各項目の VAT を計算し、VAT の合計を合計するという規則が非常に厳格でした。

Her Majesties Customs and Excise は、明細項目を合計して、その合計に対して VAT を計算することを認めていません。これには 2 つの理由があります。

  • Plain Greed -- ほとんどの場合、丸め誤差は物品税管理者に有利に働くでしょう。
  • 実用性 -- 多くの場合、1 つの項目が出荷から欠落したり、拒否されたり、返品されたりします。最初に各請求書の項目に対して VAT が計算されていれば、控除される VAT を計算する方がはるかに簡単です。
于 2012-07-25T06:35:02.073 に答える
0
<?php

function multiplyArray($array) {
    $result = array();

    foreach ($array as $value) {
        $result[] = array_product(array_map('floatval', str_replace(',', '.', $value)));
    }

    return $result;
}

$array = array(
    0 => array(0 => '18', 1 => '1,07'),
    1 => array(0 => '8', 1 => '0,44'),
    2 => array(0 => '8', 1 => '0,67'),
    3 => array(0 => '18', 1 => '0,55'),
    4 => array(0 => '18', 1 => '0,19'),
    5 => array(0 => '8', 1 => '0,48'),
    6 => array(0 => '18', 1 => '2,59'),
    7 => array(0 => '8', 1 => '0,15'),
    7 => array(0 => '18', 1 => '12,97'),
);

// Outputs
var_dump($array);
var_dump(multiplyArray($array));
var_dump(array_sum(multiplyArray($array)));
于 2012-07-24T14:56:36.277 に答える