Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中对数据数组进行排序的最佳方法_Php_Arrays_Sorting - Fatal编程技术网

在PHP中对数据数组进行排序的最佳方法

在PHP中对数据数组进行排序的最佳方法,php,arrays,sorting,Php,Arrays,Sorting,因此,我有以下数据数组: array (size=10) 0 => int 5 1 => string '5B1' (length=7) 2 => int 4 3 => string '4B1' (length=7) 4 => int 3 5 => string '3B1' (length=7) 6 => int 2 7 => string '2B1' (length=7) 8 => int 1 9 =

因此,我有以下数据数组:

array (size=10)
  0 => int 5
  1 => string '5B1' (length=7)
  2 => int 4
  3 => string '4B1' (length=7)
  4 => int 3
  5 => string '3B1' (length=7)
  6 => int 2
  7 => string '2B1' (length=7)
  8 => int 1
  9 => string '1B1' (length=7)
我要做的是将其排序为:

array (size=10)
  0 => string 5B1
  1 => int '5' (length=7)
  2 => string 4B1
  3 => int '4' (length=7)
  4 => string 3B1
  5 => int '3' (length=7)
  6 => string 2B1
  7 => int '2' (length=7)
  8 => string 1B1
  9 => int '1' (length=7)
数字的层次结构从未改变,尽管有一个附加级别,如图所示:

7 -> 6b2 -> 6b1 -> 6 -> 5b2 -> 5b1 -> 5 4b2 -> 4b1 -> 4 -> 3b2 -> 3b1 -> 3 -> 2b2 -> 2b1 -> 2 -> 1b2 -> 1b1 -> 1 -> b2 -> b1
我想知道用PHP排序的最好方法是什么

一方面,我在考虑从上到下遍历静态层次结构数组,并使用它对动态数组进行排序


还有其他建议吗?

答案很简单,马克·贝克给了我正确的答案

我最初使用rsort、krsort和array_flip之间的复杂组合来获得一个几乎可以工作的解决方案


使用带有SORT\u NATURAL标志的rsort就成功了。

您是否考虑过使用带有
SORT\u NATURAL
标志的PHP函数?您是否尝试过测试自己?阅读有关阵列相关方法的手册?列出数组排序functions@MarkBaker是的,我已经广泛阅读了这本手册。这似乎是一个简单的解决方案,但并不像你一开始想象的那么简单。rsort的顺序错误(与5b1->5->4b1->4对应的5->5b1->4b1->4)。我不相信有一个预构建的函数可以排序,因此我的问题是使用比较数组