You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8中如何将提交的小数转换为英文单词形式展示

实现方案

你不需要修改现有的提交、存储逻辑,只需要新增数字转英文拼写的转换逻辑,在展示层调用即可,具体步骤如下:

步骤1:添加数字转英文的辅助函数

在app目录下新建Helpers文件夹,在文件夹内创建NumberToWords.php文件,写入以下代码:

<?php

function numberToWords($number)
{
    $digits = [
        0 => 'zero', 1 => 'one', 2 => 'two', 3 => 'three', 4 => 'four',
        5 => 'five', 6 => 'six', 7 => 'seven', 8 => 'eight', 9 => 'nine',
        10 => 'ten', 11 => 'eleven', 12 => 'twelve', 13 => 'thirteen',
        14 => 'fourteen', 15 => 'fifteen', 16 => 'sixteen', 17 => 'seventeen',
        18 => 'eighteen', 19 => 'nineteen', 20 => 'twenty', 30 => 'thirty',
        40 => 'forty', 50 => 'fifty', 60 => 'sixty', 70 => 'seventy',
        80 => 'eighty', 90 => 'ninety'
    ];

    $integer = floor($number);
    $decimal = round(($number - $integer) * 100);

    // 处理整数部分
    if ($integer < 21) {
        $integerStr = $digits[$integer];
    } elseif ($integer < 100) {
        $integerStr = $digits[floor($integer / 10) * 10];
        if ($integer % 10 > 0) {
            $integerStr .= ' ' . $digits[$integer % 10];
        }
    }
    // 如需支持更大的数字,可自行扩展百、千等位数的转换逻辑

    // 处理小数部分
    $decimalStr = '';
    if ($decimal > 0) {
        $decimalStr = ' point';
        foreach (str_split((string)$decimal) as $d) {
            $decimalStr .= ' ' . $digits[$d];
        }
    }

    return trim($integerStr . $decimalStr);
}

步骤2:注册辅助函数

打开项目根目录的composer.json文件,找到autoload配置块,添加files项注册辅助函数:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    },
    "files": [
        "app/Helpers/NumberToWords.php"
    ]
},

保存后在项目根目录执行命令使配置生效:
composer dump-autoload

步骤3:修改列表页展示逻辑

打开index.blade.php文件,找到原来输出数字的代码:

<td>{{ $product->detail }}</td>

修改为调用辅助函数转换后输出:

<td>{{ numberToWords($product->detail) }}</td>

优化可选:使用模型访问器

如果你需要在多个页面用到转换后的文本,可以在Product模型中添加访问器,无需重复调用函数:

// 在Product.php模型中添加以下方法
public function getDetailWordAttribute()
{
    return numberToWords($this->detail);
}

之后所有地方都可以直接通过$product->detail_word获取转换后的文本。

内容的提问来源于stack exchange,提问作者Shahed Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:15:05