php按所需顺序排序数组

时间:2012-10-09 05:42:17

标签: php arrays sorting

如何创建一个PHP函数,根据所需的顺序对数组进行排序/排序?

数组将包含字符串或数值,例如我有一个

array = A,B,C,D,E,F

我想基于其键更改数组,因此创建

create_array_index(5,2,4,1,3,0)将显示array F,C,E,B,D,A create_array_index(0,2,4,1,3,5)会显示array A,C,E,B,D,F

我知道,我可以手动访问该值:$array[5],$array[2],...等等,但这需要花费很多时间,是否有任何功能

由于

4 个答案:

答案 0 :(得分:1)

当您按键使用排序时,函数ksort()是最佳的。

答案 1 :(得分:1)

使用一些php排序函数的方法很少(就像其他已经习惯的人一样),这是另一种如何完成这项工作的简短方法。

function sortArrayByKeys()

function sortArrayByKey($keystring, $origarray) {
  $res = array();
  $keys = explode(',', $keystring);
  foreach ($keys as $key) $res[] = $origarray[$key];
  return $res;
  }

试验:

$original_array = array('A', 'B', 'C', 'D', 'E', 'F');

$sort_pattern = '5,2,4,1,3,0';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";

$sort_pattern = '0,2,4,1,3,5';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";

$sort_pattern = '5,4,3,2,1,0';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";

$sort_pattern = '0,5,4,2,1,3';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array);

输出:

5,2,4,1,3,0 => F,C,E,B,D,A
0,2,4,1,3,5 => A,C,E,B,D,F
5,4,3,2,1,0 => F,E,D,C,B,A
0,5,4,2,1,3 => A,F,E,C,B,D

干杯;)

答案 2 :(得分:0)

检查PHP中可用的不同排序选项。

基于数组键排序 - http://us3.php.net/ksort

您还可以根据自己的比较函数进行排序 - http://us3.php.net/manual/en/function.uksort.php

答案 3 :(得分:0)

Php中有许多数组函数,它们都在PHP Official websites上讨论过。至于我的理解,你正在寻找ksort (Sort Array By keys)krsort (Sort Array By Keys In Reverse)。请在给定的链接上查看它们。并亲自尝试...... Goodluck

如果您认为ksort和krsort不灵活或不符合您的要求,您也可以创建自己的自定义功能来执行所需的工作并在您的应用程序中随时使用。