在刀片模板中将编号格式设置为K / M / B

时间:2019-01-06 10:36:54

标签: php laravel laravel-5 laravel-blade

我正在使用laravel 5.7.19。

在我的r.db("identitydb").table("connections") .filter(r.row("origin").eq("person").or(r.row("type").eq("human"))) 控制器中,我从数据库中查询数据并将其移交给视图:

TableController.php

在我的public function index() { $c = DB::table('tick_data') ->select('*') ->join('basis', 'basis.Id', '=', 'tick_data.b_id') ->whereRaw('tick_data.id IN( SELECT MAX(tick_data.id) FROM tick_data GROUP BY tick_data.exchange_timestamp)') ->get(); return view('datatable')->with('coins', $c); } 文件中,我正在输出数据:

table.blade.php

如您所见,我主要使用 @foreach ($coins as $key=>$c) <tr> <td>{{ ++$key }}</td> <td>{{ $c->pair }}</td> <td>{{ number_format($c->last_price, 8) }}</td> <td>{{ number_format($c->price_change_percentage, 8) }}</td> <td>{{ number_format($c->price_change, 8) }}</td> <td>{{ number_format($c->high_price, 8) }}</td> <td>{{ number_format($c->low_price, 8) }}</td> <td>{{ $c->base_volume }}</td> <td>{{ $c->name }}</td> </tr> @endforeach 函数来格式化我的值。

但是,number_format()的形式为base_volume467703.0000000000,我想用10831.13202978000将其更改为简写形式。

刀片中是否有任何功能可以做到这一点?预格式化数字的好方法是什么?

感谢您的答复!

1 个答案:

答案 0 :(得分:1)

我不知道任何刀片功能都可以做到这一点。但是,您可以为此使用PHP Humanizer软件包。例如,从他们的文档中:

use Coduo\PHPHumanizer\NumberHumanizer;

NumberHumanizer::metricSuffix(-1); // "-1"
NumberHumanizer::metricSuffix(0); // "0"
NumberHumanizer::metricSuffix(1); // "1"
NumberHumanizer::metricSuffix(101); // "101"
NumberHumanizer::metricSuffix(1000); // "1k"
NumberHumanizer::metricSuffix(1240); // "1.2k"
NumberHumanizer::metricSuffix(1240000); // "1.24M"
NumberHumanizer::metricSuffix(3500000); // "3.5M"

关于软件包的好处是,它还支持多种语言环境。

编辑:here中还讨论了其他替代解决方案。如果您只需要缩短数字,这可能是一个更好的选择。