1

DBモデルからいくつかのデータが出ています。私がやりたいのは、PAYMENTS_totalの合計金額を取得し、それをVAT(0.20)で乗算することです。

どこかにある種のFORループを作成する必要があると思いますが、どこにあるのかよくわかりませんか?

コントローラの私のコードは次のとおりです。

function vat_list()
    {
        if(isset($_POST['search_date']))
        {
            $search_date = $this->input->post('search_date', TRUE);
        }
        else
        {
            $search_date = date('D j M Y', strtotime('today - 7 days')) . ' to ' . date('D j M Y');
        }

        $my_result_data = $this->Invoices_model->read_vat($this->viewinguser->BUSINESSES_id, $search_date);
        $my_results = $my_result_data->result();

        $vat_total = $my_results[0]->PAYMENTS_total;
        $vat_total = number_format($my_results[0]->PAYMENTS_total, 2, '.', '') * 0.20;

        $this->template->set('title', 'View VAT Reports');
        $this->template->set('subtitle', $search_date);
        $this->template->set('vat_items', $my_results);
        $this->template->set('vat_total', $vat_total);
        $this->template->build('accounts/invoices/vat_list');
    }

ありがとう

4

2 に答える 2

4

編集

これを行わないでください-金銭計算を処理するために浮動小数点演算を使用しないでください。固定小数点(10進数)データ型を実装するものを使用します。https://github.com/mathiasverraes/moneyhttps://github.com/sebastianbergmann/moneyなど、これに使用できるライブラリがいくつかあります。元の答えは、歴史的な目的のためだけにここに残されています。


あなたの$my_results配列の構造を知らなければ、私は確かに言うことはできませんが、これがあなたが求めているものだと思います:

// ...

$my_results = $my_result_data->result();

// The VAT rate (you never know, it *might* go down at some point before we die)
$vatPercent = 20;

// Get the total of all payments
$total = 0;
foreach ($my_results as $result) {
  $total += $result->PAYMENTS_total;
}

// Calculate the VAT on the total
$vat = $total * ($vatPercent / 100);

// The total including VAT
$totalIncVat = $total + $vat;

// You can now number_format() to your hearts content

$this->template->set('title', 'View VAT Reports');

// ...
于 2012-05-24T10:18:43.730 に答える
1

これを試して:

    $my_results = $my_result_data->result();
    foreach ($my_results as $result) {
       number_format($result->PAYMENTS_total, 2, '.', '') * 0.20;
    }

number_format の結果は、$result\a new array\etc に戻すことができます。

于 2012-05-24T10:13:12.357 に答える