簡體   English   中英

如何使用PHP在foreach中回顯數字格式分組數組?

[英]How to echo number format grouping array inside foreach using PHP ?

我的問題是指此鏈接中的上一個問題。 如何使用PHP中的foreach循環僅回顯特定的多個相同記錄一次?

這是我當前的代碼

代碼:

$sqlTXT  = "SELECT * FROM TABLE";
$arr_old = DB::getInstance()->FetchArray($sqlTXT);

if(count($arr_old) > 0)
{
        $arr = array();

        foreach($arr_old as $key => $item)
    {
        if(!array_key_exists($item['ACCOUNT_NUMBER'], $arr))
        {
            $arr[$item['ACCOUNT_NUMBER']][$item['ACCOUNT_NUMBER']]['ACCOUNT']   = $item['ACCOUNT'];
            $arr[$item['ACCOUNT_NUMBER']][$item['ACCOUNT_NUMBER']]['CATEGORY']  = $item['CATEGORY'];
            $arr[$item['ACCOUNT_NUMBER']][$item['ACCOUNT_NUMBER']]['VALUE']     = $item['VALUE'];
            $arr[$item['ACCOUNT_NUMBER']][$item['ACCOUNT_NUMBER']]['FUND']      = $item['FUND'];
            $arr[$item['ACCOUNT_NUMBER']][$item['ACCOUNT_NUMBER']]['AMOUNT']    = $item['AMOUNT'];
        }
        else
        {
            $arr[$item['ACCOUNT_NUMBER']][$item['ACCOUNT_NUMBER']]['CATEGORY']   .= ",".$item['CATEGORY'];
            $arr[$item['ACCOUNT_NUMBER']][$item['ACCOUNT_NUMBER']]['VALUE']      .= ",".$item['VALUE'];
        }
    }

    ksort($arr, SORT_NUMERIC);

    echo "<table>";
    echo "<tr>";
    echo "<td>ACCOUNT</td>";
    echo "<td>CATEGORY</td>";
    echo "<td>VALUE</td>";
    echo "<td>FUND</td>";
    echo "<td>AMOUNT</td>";
    echo "</tr>";
    foreach($arr as $key => $item)
    {

        // Display Category
        $xpl = explode(",",$item[$key]['CATEGORY']);
        $n_category = "";
        foreach($xpl as $b => $a){
            $n_category .= ($b!=0) ? "<br>".$a : $a ;
        }

        // Display Value
        $trl = explode(",",$item[$key]['VALUE']);
        $n_value = "";
        foreach($trl as $c => $d){
            $n_value .= ($c!=0) ? "<br>".$d : $d ;

            // $new = number_format($n_value, 2, '.', ',');
        }

        echo "<tr>";
        echo "<td>".$item[$key]['ACCOUNT']."</td>";
        echo "<td>".$n_category."</td>";
        echo "<td>".$new."</td>";
        echo "<td>".$item[$key]['FUND']."</td>";
        echo "<td>".$item[$key]['AMOUNT']."</td>";
        echo "</tr>";
    }
    echo "</table>";

}

並輸出如下圖所示。

輸出:

ACCOUNT         CATEGORY            VALUE           FUND            AMOUNT 

0001            Category1           10000           BIN         300,000.00
                Category2               0 
                Category3             500
                Category4           15000


0002            Category1            8500           BIN          70,000.00
                Category2            7000
                Category3             100
                Category4               0

但是我當前的問題是我無法將VALUE列轉換為2位小數格式。 當我添加代碼

$new = number_format($n_value, 2, '.', ',');

輸出僅顯示數組的第一個值。

我希望有人可以幫助我解決這個問題。

提前致謝。

您需要獨立轉換列中的每個值。 嘗試將您的foreach循環更改為此:

foreach($trl as $c => $d){
    if (is_numeric($d)) $d = number_format($d, 2, '.', ',');
    $n_value .= ($c!=0) ? "<br>".$d : $d ;
}

暫無
暫無

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

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