【问题标题】:How can I sort an array alphabetically, where prefixes show first instead of last?如何按字母顺序对数组进行排序,其中前缀首先显示而不是最后显示?
【发布时间】:2019-12-28 21:58:22
【问题描述】:

我有一个由以下文件名(以及其他文件名)填充的数组:

cookies、索引、会员联系方式、会员通知、会员、社交、支持

这是 PHP 在使用 sort 函数后给数组的顺序,但请注意 PHP 如何将“members”放在所有“members-”项之后。有没有办法对这个数组进行排序,以便“成员”显示在“成员 -”项目之前而不是之后? PHP 中所有的排序函数我都试过了,但没有一个能解决问题。

附:很抱歉,主题行笨拙且公认不好。我不知道引入这个问题的经济方法。

【问题讨论】:

  • 我无法重现这种行为:3v4l.org/s0gCJ
  • 要说声谢谢。你无法复制它让我进去尝试自己做。然后我意识到这是因为我做了一个scandir,所以文件是cookies.php,index.php等)然后将其回显到浏览器删除扩展名并仅保留带有pathinfo的文件名。所以它对 members-contact.php、members-notifications.php 和 members.php 进行排序,而不仅仅是文件名。不过感谢@Nick 提供的线索!
  • 我很高兴听到你把它整理好了。这类事情真的很难追踪!
  • 呵呵。谢谢。和...排序。双关语是什么意思? ;)
  • 没有双关语!如果您没有发表评论,我可能永远不会注意到我写的内容。可惜,那会是一个很好的... :-)

标签: php arrays sorting alphabetical


【解决方案1】:

我意识到我是根据带有扩展名的文件名进行排序的,而不是没有(即使我在屏幕上回显没有扩展名的文件名,这让我感到困惑)。由于 PHP 在破折号之后排序(即 members-contact.php 在 members.php 之前),它按应有的方式排序,但我没有输出整个文件名。经验教训:注意您排序的内容,而不是输出的内容。

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 2011-09-23
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多