Dear IT前輩們
有一個php語法問題,因資料庫撈出來的資料呈現XXXXXXXX-負數,我利用number_format語法去顯示千分位符號,不過只要ECHO出的資料是負數的,負數的符號都會被取代掉...
可以麻煩IT前輩們指教...
$test = "508224.00-";
$test = number_format($test);
echo $test;
以下是資料庫拉出來的值
65199146.00
508224.00-
0.00
64690922.00
42837177.00-
21853745.00
3710279.00-
3766647.00-
5570543.00-
8806276.00
411581.00
36523350.00-
27305493.00-
0.00
27305493.00-
用程式碼來解決異質系統的問題:
<?php
$test = "508224.00-";
$sign = 1;
if ( substr($test, -1) == "-" ) {
$sign=-1;
}
$test = number_format((float)$test*$sign,2);
echo $test;
?>
20170310T0949補充:
直接改變值, 只有負號才相乘:
<?php
$test = "508224.00-";
if ( substr($test, -1) == "-" ) {
$test*=-1;
}
$test = number_format($test,2);
echo $test;
?>
直接改變值, 正負號都相乘:
<?php
$test = "508224.00-";
$test*=(substr($test, -1) == "-"?-1:1);
$test = number_format($test,2);
echo $test;
?>
其實簡單來說就是字串處理,如果還是想要把負數符號留在後面的話,也可以這樣
<?php
$test = "508224.00-";
$a = explode(".", $test);
$test = number_format($a[0]).".".$a[1];
echo $test;
?>
感謝各位大大的幫忙,剛剛試了一下wonton大 and bizpro大
Code是沒問題!!!
只是遇到的是全部都會顯示成1是不是陣列中的問題...
<table width="600" border="1.5" style="border-style:solid;">
<tr><td height="30px" bgcolor="#B0E0E6">NAME</td><td height="30px" bgcolor="#B0E0E6">DMBTR</td></tr>
<?
foreach ($result["IT_FA01"] as $AAA)
{
echo "<tr><td bgcolor='#E6E6FA'>"
, $AAA["NAME"],"</td><td bgcolor='#E6E6FA'>",number_format(explode(".00", $AAA["DMBTR"])),"</td></tr>";
echo $AAA["DMBTR"];
}
?>
</table>
會顯示成以下圖片
不過ECHO印出echo $AAA["DMBTR"];
卻有整排的資料...
希望IT前輩能指點小弟ˊˋ
感謝IT大大們提供方法,已經自行解決了:)
https://pjchender.blogspot.tw/2015/05/php.html
參考這個下去處理!!!
謝謝IT大大們^^
您的資料結構不對. $AAA[$DMBTR]是字串, 並非數值. explode(".00", $AAA["DMBTR"])運行的結果是陣列, 更非數值. number_format的第一個參數必須是float數值.
Dear bizpro大大
有 之後轉成數值就搞定了 加上切割語法就OK:)
真的很感謝...