我需要对一个数组进行排序,之前我已经完成了这个,但它很简单,因为数组有数字或字母以ascedning / descending或字母顺序排序。在这种情况下,我有一个数组,其中每个元素有3个值,例如:
array[0]=code=1234
=description='example array'
=orderCode=P
array[1]=code=1235
=description='example array1'
=orderCode=A
.
.
.
现在我需要命令theese按顺序读取orderCode值:P,I,B,C,A,S,D。 我想到的方法就是为数组添加另一个值,如:
if($array[$c]['orderCode'] == 'P')
$array[$c]['newOrderCode'] = 0;
if($array[$c]['orderCode'] == 'I')
$array[$c]['newOrderCode'] = 1;
if($array[$c]['orderCode'] == 'B')
$array[$c]['newOrderCode'] = 2;
或切换案例,然后按新值排序。这可行,但我的问题是,是否有一个函数我可以将数组传递给一个orderring字符串或什么?
谢谢你, 詹姆斯
答案 0 :(得分:0)
使用用户定义的函数并选择按键或值排序,您需要在此处查看所有列表函数:http://www.php.net/manual/en/array.sorting.php
答案 1 :(得分:0)
在php 5.3及以上版本中,您可以使用带闭包的usort。
$order = array('P','I','B','C','A','S','D');
usort($array, function ($a, $b) use ($order){
return array_search($a["orderCode"], $order) - array_search($b["orderCode"], $order);
});
之前你必须创建一个分拣机功能
function orderCode_sorter($a, $b){
$order = array('P','I','B','C','A','S','D');
return array_search($a["orderCode"], $order) - array_search($b["orderCode"], $order);
}
usort($array, "orderCode_sorter");