时间:2021-07-01 10:21:17 帮助过:59人阅读
- <code>//排序前
- $arr = array(
- 0 => array('id' => 'C160001-12'),
- 1 => array('id' => 'C160001-10'),
- 2 => array('id' => 'C160001-11'),
- 3 => array('id' => 'C160001-4'),
- 4 => array('id' => 'C160001-6'),
- 5 => array('id' => 'C160001-3'),
- 6 => array('id' => 'C160001-2'),
- 7 => array('id' => 'C160001-5'),
- 8 => array('id' => 'C160001-0'),
- 9 => array('id' => 'C160001-8'),
- 10 => array('id' => 'C160001-1'),
- 11 => array('id' => 'C160001-9'),
- 12 => array('id' => 'C160001-7'),
- );</code>
- <code>//排序后
- $arr = array(
- 0 => array('id' => 'C160001-0'),
- 1 => array('id' => 'C160001-1'),
- 2 => array('id' => 'C160001-2'),
- 3 => array('id' => 'C160001-3'),
- 4 => array('id' => 'C160001-4'),
- 5 => array('id' => 'C160001-5'),
- 6 => array('id' => 'C160001-6'),
- 7 => array('id' => 'C160001-7'),
- 8 => array('id' => 'C160001-8'),
- 9 => array('id' => 'C160001-9'),
- 10 => array('id' => 'C160001-10'),
- 11 => array('id' => 'C160001-11'),
- 12 => array('id' => 'C160001-12'),
- );</code>
求大神解答排序算法!
---------------------------------------华丽的分割线------------------------------------------
虽然楼下给出了答案,但是本人的另一位朋友又给出了一种更简便直观的方法,如下:
- <code>usort($statementsample,function($a,$b){
- return (int)substr($a['id'],8)>(int)substr($b['id'],8);
- });</code>
- <code>//排序前
- $arr = array(
- 0 => array('id' => 'C160001-12'),
- 1 => array('id' => 'C160001-10'),
- 2 => array('id' => 'C160001-11'),
- 3 => array('id' => 'C160001-4'),
- 4 => array('id' => 'C160001-6'),
- 5 => array('id' => 'C160001-3'),
- 6 => array('id' => 'C160001-2'),
- 7 => array('id' => 'C160001-5'),
- 8 => array('id' => 'C160001-0'),
- 9 => array('id' => 'C160001-8'),
- 10 => array('id' => 'C160001-1'),
- 11 => array('id' => 'C160001-9'),
- 12 => array('id' => 'C160001-7'),
- );</code>
- <code>//排序后
- $arr = array(
- 0 => array('id' => 'C160001-0'),
- 1 => array('id' => 'C160001-1'),
- 2 => array('id' => 'C160001-2'),
- 3 => array('id' => 'C160001-3'),
- 4 => array('id' => 'C160001-4'),
- 5 => array('id' => 'C160001-5'),
- 6 => array('id' => 'C160001-6'),
- 7 => array('id' => 'C160001-7'),
- 8 => array('id' => 'C160001-8'),
- 9 => array('id' => 'C160001-9'),
- 10 => array('id' => 'C160001-10'),
- 11 => array('id' => 'C160001-11'),
- 12 => array('id' => 'C160001-12'),
- );</code>
求大神解答排序算法!
---------------------------------------华丽的分割线------------------------------------------
虽然楼下给出了答案,但是本人的另一位朋友又给出了一种更简便直观的方法,如下:
- <code>usort($statementsample,function($a,$b){
- return (int)substr($a['id'],8)>(int)substr($b['id'],8);
- });</code>
- <code>function my_sort($a,$b)
- {
- $a = explode('-',$a['id'])[1];
- $b = explode('-',$b['id'])[1];
- if ($a==$b) return 0;
- return ($a<$b)?-1:1;
- }
- usort($arr,'my_sort');
- </code>
使用usort 方法比较灵活。
- <code>$data[] = array('volume' => 67, 'edition' => 2);
- $data[] = array('volume' => 86, 'edition' => 1);
- $data[] = array('volume' => 85, 'edition' => 6);
- $data[] = array('volume' => 98, 'edition' => 2);
- $data[] = array('volume' => 86, 'edition' => 6);
- $data[] = array('volume' => 67, 'edition' => 7);
- $type = array();
- foreach ($data as $key => $value) {
- $type[] = $value['edition'];
- }
- array_multisort($type, SORT_ASC, $data);
- var_dump($data);</code>