-3

この同じ質問が 100 万回投稿されていると思われるかもしれませんが、これを少し違うものにする特別な例外が 1 つあります。

だから私は次のような配列を持っています:

$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 として表示することはできません。

頭のいい人たちは何を考えているのだろう?どんな助けでも大歓迎です!

ありがとう!

4

1 に答える 1

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

于 2013-11-12T19:33:35.803 に答える