From mycsv.csv
$data[7]个个 has these:

4294967296/4294967296  
4294967296  
8589934592/8589934592  

我想计算并放置GB,所以它们是这样的:

4GB/4GB  
4GB  
8GB/8GB

What I did:

<?php

$a = str_ireplace("/"," ",$data[7]);  
echo (floor($a/1000000000))."GB";

但它给出了/分的错误:

警告:在...中遇到非数字值第45行,4 GB

...

Help Please... Thank you


Sorry, I think I describe it wrong.
So, I have a csv file with many data in it.

while (! feof($CSVvar)) {
        $data = fgetcsv($CSVvar, 1000, ",");
        if (! empty($data)) {
            ?>
            <tr>
                <td><?php echo $data[0]; ?></td>
                <td><?php echo $data[7]; ?></td></tr>

除其他外,还将提供:

$data[7]个个

4294967296/4294967296

然后又是另一个

$data[7]个个

4294967296

以此类推..

推荐答案

在做完str_ireplace之后,你不能对4294967296 4294967296这样的字符串进行floor.为此,您需要一些循环,但我已try 使其尽可能简短,以便您保持其可读性(希望如此).

因此,根据新行拆分字符串,以便将每个字符串放在单独的数组索引中.

现在,对于表单x/yx本身的每个字符串,我们根据/拆分字符串.现在,我们将数组中的每个数字除以1e9,以将字节转换为千兆字节,并将它们内爆,后缀为GB.

最后,我们将这些结果收集到一个新的数组中,并使用一个新的行字符将它们内爆.

<?php

$result = [];

foreach(explode("\n", $data[7]) as $str){
    $result[] = implode("GB/", array_map(fn($v) => floor($v / 1e9), explode("/", $str))). 'GB';
}

echo implode("\n", $result);

Live Demo

Php相关问答推荐

Laravel有一个具有两个匹配字段

Laravel:启动下载并同时在Blade 中显示Flash消息

输入手写CSV时在PHP中进行日期判断

根据特定运输类别增加WooCommerce购物车总重量

将带有值的属性添加到WooCommerce产品,保留现有属性

将下拉 Select 的值从WooCommerce后端保存并显示到前端

如何在execute语句中使用存储过程参数?

如何在Laravel Model中自定义多个日期属性的日期格式?

如何在WordPress REST API中判断应用程序密码

Laravel自定义验证规则更正

向WooCommerce管理订单总额添加自定义总额行

PHP 8.2 弃用日志(log)存储在 Laravel 10.22.0 中的哪里?

Laravel 10 中的自定义类未找到

Woocommerce 中为空时隐藏显示变体自定义字段数据

在 WordPress 中将自定义帖子类型永久链接设置为 root

向元素添加类时添加循环错误

Symfony:指定 data_class 时,提交的表单获取初始化前不得访问

Woocommerce API 的 PHP Curl 附加参数

PHP 日期格式:ISO8601 与 ISO8601_EXPANDED

获取具有所有特定相关模型的模型