我的问题是指此链接How to echo specific multiple same records only once using foreach loops in PHP?中的上一个问题。
这是我当前的代码
代码:
$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, '.', ',');
输出仅显示数组的第一个值。
我希望有人能帮助我解决这个问题。
谢谢。
答案 0 :(得分:2)
您需要独立转换列中的每个值。尝试将您的foreach循环更改为此:
foreach($trl as $c => $d){
if (is_numeric($d)) $d = number_format($d, 2, '.', ',');
$n_value .= ($c!=0) ? "<br>".$d : $d ;
}