PHP函数将兆字节格式化为千兆字节+切换

时间:2016-02-04 21:55:13

标签: php function

我有一个数据表导入,特定行的内容看起来像这样......

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

每个数字代表兆字节,其中8000是8000mb或8gb我需要一个功能,如果它大于999,它将敲掉数字的最后3个零,然后在数字的末尾添加“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";
}

}

3 个答案:

答案 0 :(得分:0)

即使我认为检查$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 :(得分:0)

将数字除以1,000,然后将其四舍五入。

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

答案 2 :(得分:0)

这个完美无缺..

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