(个人学习保留,有不对的地方请指正)
交代下背景,之前公司测试提出来的bug,手机端提交的答案后 题号顺序乱了,两个解决办法;
1、在sql中存入的时候进行排序,因为我没权限管理数据库,存入数据的是Java写接口,没有涉及到,所以就不多说了。
2、现在用的在网页端程序中对数据进行新的排序。
--1、因为本人对数组不熟悉,试过sort、asort,这些根据数组的key进行排序,这些没成功。
--2、之后在网上查询了数组排序的函数,找到了array_multisort()。
我的数组类型
例如:
$arr=Array ( '0' => Array ( 'a' => 1, 'b' => 2,'c' => 3 ), '1' => Array ( 'a' => 3,'b' => 2,'c' => 6 ), '2' => Array ( 'a' => 6 ,'b' => 2,'c' => 8 ), '3' => Array ( 'a' => 2 ,'b' => 2,'c' => 8 ) );
直接上代码:
$newArr=[];
for($i=0;$i<count($arr);$i++){ $newArr[] = $arr[$i]["a"]; } array_multisort($newArr,$arr);
print_r($newArr);
结果:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 6 )
print_r($arr);
结果:Array ( [0] => Array ( [a] => 1 [b] => 2 [c] => 3 )
[1] => Array ( [a] => 2 [b] => 2 [c] => 8 )
[2] => Array ( [a] => 3 [b] => 2 [c] => 6 )
[3] => Array ( [a] => 6 [b] => 2 [c] => 8 ) )
定义和用法
array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。
注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。
注释:您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。