你可能会认为同样的问题已被发布了一百万次,但我有一个特殊的例外,这使得它有点不同。
所以我有一个看起来像这样的数组:
$array = array(
array('name' => 'foo', 'capacity' => "128MB"),
array('name' => 'foo2', 'capacity' => "256MB"),
array('name' => 'foo3', 'capacity' => "512MB"),
array('name' => 'foo4', 'capacity' => "16GB"),
...
);
正如您所看到的,我的数据容量在MB和GB之下,因此其结果如下所示:
foo = 128MB
foo4 = 16GB
foo2 = 256MB
foo3 = 512MB
我需要以逻辑方式对容量进行排序,将MB和GB值分开,将MB放在第一位,并将数字中的3位数排序,这样我就不会得到这种类型的排序:
1 = 100
2 = 12
3 = 140
不幸的是,将所有容量值转换为MB,然后只在需要时显示为GB。
我想知道你们所有聪明人的想法是什么?任何帮助将不胜感激!
谢谢!
答案 0 :(得分:2)
您所需要的只是usort
usort($array, function($a, $b){
$aBytes = convertInBytes($a['capacity']);
$bBytes = convertInBytes($b['capacity']);
return $aBytes - $bBytes;
});
convertInBytes不存在,当然需要对其进行编码;)
这是一个链接,向您展示如何转换为字节:PHP convert KB MB GB TB etc to Bytes