PHP函数将兆字节格式化为千兆字节+开关


PHP Function to Format Megabytes to Gigabytes + Switch

我有一个正在导入的数据表,特定行的内容如下所示...

500,1000,2000,4000,5000,8000,10000,12000,无限

每个数字代表兆字节,其中 8000 是 8000mb 或 8gb 我需要一个函数,如果它大于 3 个,它将删除数字的最后 999 个零,然后在数字末尾添加"GB",如果不超过 999,则在原始数字的末尾添加"MB"。 所以我最终为每个单元格,例如 500MB 或 8GB - 我还需要该功能来回显"无限"在小写的情况下,如果情况是"无限",这在去年很容易,但我现在真的对我的 PHP 生疏了,需要进修课程。你可以帮我吗?

这是我已经写的代码,但它不起作用...

function gigaplex($data) {
if ($data = 300) {
    echo "300MB";
} elseif ($data = 500) {
    echo "500MB";
} elseif ($data = 1000) {
    echo "1GB";
} elseif ($data = 2000) {
    echo "2GB";
} elseif ($data = 3000) {
    echo "3GB";
} elseif ($data = 4000) {
    echo "4GB";
} elseif ($data = 5000) {
    echo "5GB";
} elseif ($data = 8000) {
    echo "8GB";
} elseif ($data = 10000) {
    echo "10GB";
} elseif ($data = 12000) {
    echo "12GB";
} else {
    echo "unlimited";
}

}

即使我认为检查 $data 是否大于 999 并从变量中删除最后 3 个字符不是一个好主意,但这正是您想要的:

function gigaplex($data) {
    if($data > 999) {
         $data = substr($data, 0, -3);
         $data .= "GB";
    } else if($data == 'UNLIMITED') {
         return 'UNLIMITED';
    } else {
         $data .= "MB";
    }
    return $data;
}

我更喜欢这个:

function gigaplex($data) {
    if($data >= 1000) {
         $data /= 1000;
         return $data . "GB";
    } else if($data == 'UNLIMITED') {
         return 'UNLIMITED';
    } else {
         return $data . "MB";
    }
}

将数字除以 1,000,然后将其向下舍入。

fuunction gigaplex($data) {
    if (!is_numeric($data)) {
        return $data;
    } elseif ($data >= 1000) {
        return floor($data/1000) . "GB";
    } else {
        return $data . "MB";
    }
}

这个工作得很好。

function gigaplex($data) {
   if($data == "UNLIMITED") {
     echo 'unlimited';
   } else if ($data >= 1000) {
     $data /= 1000;
     echo $data."GB";
   } else {
     echo $data."MB";
   }
}