首页 > 解决方案 > PHP使用特定字母顺序对混合数组值进行排序

问题描述

我有这个数组:

$po = array ( 
5 => '8', 
6 => '10', 
7 => '12', 
8 => '41', 
12 => '42', 
9 => '43', 
10 => '44', 
11 => '45', 
1 => 'L', 
0 => 'M', 
4 => 'S', 
2 => 'XL', 
3 => 'XXL', 
13 => 'XXS'
)

我需要这样排序:

  1. 所有数字第一个 asc
  2. 按此顺序的所有信件:$order = ['XXS','XS','S','M','L','XL','XXL'];

到目前为止,我从互联网示例中获取了这段代码:

$sort_first  = array('XXS','XS','S','M','L','XL','XXL');
usort($poval, function ($a, $b) use ($sort_first) {
$posA = array_search($a, $sort_first);
$posB = array_search($b, $sort_first);
return $posA - $posB;
});

但数值不行..这是重新排序后的导出:

$po = array ( 
0 => '8', 
1 => '45', 
2 => 'XXS', 
3 => '43', 
4 => '44', 
5 => '42', 
6 => '10', 
7 => '12', 
8 => '41', 
9 => 'S', 
10 => 'M', 
11 => 'L', 
12 => 'XL', 
13 => 'XXL'
)

我怎样才能做到这一点?谢谢你的时间

标签: phparrayssorting

解决方案


如果我理解正确,您可以遍历您的数组并将其拆分为两个单独的数组 - 一个用于数字值,一个用于非数字值 - 然后将它们重新合并在一起,但我无法告诉您这是否是有效的 PHP 语法.


推荐阅读