0

我如何创建一个 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

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

谢谢

4

4 回答 4

1

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

于 2012-10-09T05:45:42.440 回答
1

使用一些 php 排序功能的方法很少(就像其他人已经建议的那样),这是另一种完成这项工作的捷径。

函数 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

干杯;)

于 2012-10-09T06:45:16.407 回答
0

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

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

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

于 2012-10-09T05:46:28.093 回答
0

PHP中有很多数组函数, PHP官网都有讨论。据我了解,您正在寻找ksort (Sort Array By keys)krsort (Sort Array By Keys In Reverse)。请在给定的链接上检查它们。自己试试吧。。祝你好运

如果您觉得 ksort 和 krsort 对您的要求不灵活或不准确,您还可以创建自己的自定义函数来完成所需的工作并在您的应用程序中随时使用它。

于 2012-10-09T05:56:20.813 回答