PHP-按我想要的类别对数组排序

PHP-按我想要的类别对数组排序,php,arrays,sorting,Php,Arrays,Sorting,我需要按衣服大小对数组进行排序,如下面的示例所示 我需要从以下位置开始:['M','M','S','XL','L','XL','S','M','XL','S'] 到达:['S','S','S','M','M','M','L','XL','XL','XL'] 这就是我所做的。它能工作,但我不喜欢,它看起来不太好。我希望我每人只有一个 function trier(array $table):array{ $tableauVide=[]; foreach($table a

我需要按衣服大小对数组进行排序,如下面的示例所示

我需要从以下位置开始:['M','M','S','XL','L','XL','S','M','XL','S']

到达:['S','S','S','M','M','M','L','XL','XL','XL']

这就是我所做的。它能工作,但我不喜欢,它看起来不太好。我希望我每人只有一个

function trier(array $table):array{
    $tableauVide=[];

         foreach($table as $element){
        if($element=='S'){
        array_push($tableauVide,$element);
        }
    }
         foreach($table as $element){
        if($element=='M'){
        array_push($tableauVide,$element);
        }
    }
      foreach($table as $element){
        if($element=='L'){
        array_push($tableauVide,$element);
        }
    }
    foreach($table as $element){
        if($element=='XL'){
        array_push($tableauVide,$element);
        }
    }

return $tableauVide; }
 var_dump(trier(['M', 'M', 'S', 'XL', 'L', 'XL', 'S', 'M', 'XL', 'S']));
我是PHP新手,所以我读了很多关于数组排序的资料。像usort函数(这似乎是一种将数组按特定方式排序的方法,但我不知道它是如何工作的。你能给我一个提示吗?或者你会如何处理它以使其更好

谢谢

函数trier(数组$table):数组{
//用户定义的排序回调函数将使用此数组根据其在此数组中的索引来比较大小。
$correctorOrderOfsizes=['XXS'、'XS'、'S'、'M'、'L'、'XL'、'XXL'、'XXXL'];
//`usort`接受回调函数,该函数在两个项之间进行自定义比较。
//“array_search”返回数组中给定元素的索引,我们将比较这些值(例如,“S”的索引为2,“L”的索引为4,因此我们将2与4进行比较)。
//他被称为宇宙飞船操作员(https://www.php.net/manual/en/language.operators.comparison.php)
usort($table,function($a,$b)use($correctorOrderOfsizes){
返回数组搜索($a,$correctorOrderOfsSies)数组搜索($b,$correctorOrderOfsSies);
});
返回$table;
}
变量转储(trier(['M','M','S','XL','L','XL','S','M','XL','S']);
  • 注意:当使用“未知”大小时,上述代码不能(正确)处理这种情况

您没有多维数组,但原理是相同的。适应您自己的情况应该不会太难。非常感谢您,我需要处理它!谢谢