【问题标题】:sorting a part of a array in PHP? [closed]在 PHP 中对数组的一部分进行排序? [关闭]
【发布时间】:2015-05-13 10:34:39
【问题描述】:

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

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

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

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

这意味着,在结果中,数组必须像这样排序: n、a、b、c、m、s、z、o。

我希望你能帮助我。

谢谢, 妮可

【问题讨论】:

  • 您必须自己尝试一下才能在这里提问。
  • 将数组从元素 2 拆分到元素 6,并将其输入到新数组中。然后对新数组进行排序并合并它们...
  • 我们不会为您编码。请付出一些努力(代码;研究;伪代码)
  • @MarkBaker 谢谢你,我会看看并尝试使用 array_slice() 和 array_splice()
  • @Rizier123 抱歉,您误解了我的意思!我从来没有要求或希望您或其他用户为我编写代码,我只是要求找到解决我的问题的方法。我认为 StackOverflow 是一个平台,用户可以在这里寻求帮助(在这种情况下像我一样)以及可以提供帮助的用户,比如 MarkBaker。

标签: php arrays sorting


【解决方案1】:

使用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 开始

【讨论】:

  • 总是喜欢在句子中包含函数名称的解释:)
【解决方案2】:

您需要拆分数组,获取第一个和最后一个元素并分别存储它们,然后对数组进行排序,然后将它们重新添加。您需要删除的命令是 array_shift()array_pop()第一个和最后一个元素,然后 array_unshift()array_push() 将它们添加回来。

试试这个:

$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 示例来展示它的工作原理:https://eval.in/353847

【讨论】:

  • 希望 OP 在数组中始终拥有相同数量的元素。
  • @Rizier123 这只是他不想排序的第一个也是最后一个。无论数组中的元素数量如何,这都会做到这一点,但如果它始终是他想要的第 2 到第 6 个元素,我也会添加一个 array_splice() 选项,而不管数组中的数量是多少。
猜你喜欢
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多