首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对数组结果排序

对数组结果排序
EN

Stack Overflow用户
提问于 2013-05-31 21:50:29
回答 2查看 54关注 0票数 1

我的数组将只包含一组特定的字符。但是,这些字符可以按任意顺序出现在数组中。

我想重新排列这个数组,使它们始终按相同的顺序排列。

这是可能的,因为有时数组将包含1个条目,其他时候最多包含4个条目,可能更多。

可能出现在数组中的字符将是() ^ & ! #,但在提交表单之前,我不知道顺序是什么。

理想情况下,我总是希望它们按以下顺序排列:

代码语言:javascript
运行
复制
!  # ^  &  ()

这是可能的吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-31 21:55:11

试试这样的东西

代码语言:javascript
运行
复制
// establish the sort order
$order = array("!","#", "^", "&", "(",")");

// usort with indexes of $orderArray
usort($arr, function($a, $b) use($order) {
      $aIdx = array_search($a, $order);
      $bIdx = array_search($b, $order);
      return $aIdx - $bIdx;
});
票数 1
EN

Stack Overflow用户

发布于 2013-05-31 22:14:41

您可以使用一个内置的PHP排序函数,这取决于您的需求。

您最感兴趣的两个可能是

  • asort -对数组进行排序并维护索引association
  • sort -此函数对数组进行排序。完成此功能后,元素将从低到高排列。

不过,还有很多其他的-请参阅Php手册中的Sorting Arrays

或者,如果生成的排序顺序与所需的排序顺序不匹配,则可以使用usort,它允许您定义自定义排序函数

像这样的东西应该是可行的

代码语言:javascript
运行
复制
  $arrayToSort = array('#','&','()','^','!');
  $order = array( '!', '#', '^', '&', '()');

  function compare($a,$b) {
    global $order;
   $indexa = array_search($a,$order);
   $indexb = array_search($b,$order);
   return ($indexa < $indexb) ? -1 : 1;
  }

  usort($arrayToSort, $compare);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16858897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档