在PHP中对数组的一部分进行排序?

时间:2015-05-13 10:34:39

标签: php arrays sorting

我在PHP中排序数组时遇到问题。 我尝试了PHP中的所有排序函数,但是没有一个函数只能对数组的某些部分进行排序。  我怎样才能在PHP中对数组的一部分进行排序?

作为一个示例,我有一个这样的数组:

$letter = array("n", "a", "s", "c", "b", "m", "z", "o")

现在我只想从元素2到数组的元素6进行排序。

这意味着,在结果中,数组必须是这样的sortet: n,a,b,c,m,s,z,o。

我希望你能帮助我。

谢谢, 尼科

2 个答案:

答案 0 :(得分:3)

使用array_slice()sort()提取元素2-6,然后使用array_splice()重新插入

$letter = array("n", "a", "s", "c", "b", "m", "z", "o");

$start = 2;
$end = 6;

$temp = array_slice($letter, $start-1, $end-$start);
sort($temp);
array_splice($letter, $start-1, $end-$start, $temp);
var_dump($letter);

注意$start调整,因为您从元素1开始计算,而PHP枚举数组从0开始

答案 1 :(得分:1)

你需要拆分你的阵列,取出第一个和最后一个元素并分别存储它们然后再排序数组然后重新添加它们。你需要的命令是array_shift()和{{3删除第一个和最后一个元素,然后array_pop()array_unshift()将其重新添加。

试试这个:

$letter = array("n", "a", "s", "c", "b", "m", "z", "o");
$first = array_shift($letter);
$last = array_pop($letter);
asort($letter);
array_unshift($letter, $first);
array_push($last);

如果它只是你要排序的第2到第6个元素而不管数组的长度那么你需要这样的东西:

$letter = array("n", "a", "s", "c", "b", "m", "z", "o");
$to_sort = array_splice($letter, 1, 6);
sort($to_sort);
array_splice($letter, 1, 0, $to_sort);

这是一个显示它正常工作的eval.in示例:array_push()