【问题标题】:Sort array by alphabetical letter按字母顺序排列数组
【发布时间】:2021-06-25 13:08:29
【问题描述】:

我有这个数组:

$words = array(
    array('Agreement range','Accord'),
    array('Reception','Accueil')
);

我想要做的是考虑到第一项(协议范围,在这种情况下的接收)按字母顺序对这个数组进行排序

像这样:

[A] =>
array('Agreement range','Accord')
[R] =>
array('Reception','Accueil')

感谢您的帮助!

【问题讨论】:

  • 欢迎来到 Stack Overflow。我建议阅读How to ask,以便在您在这里提问时获得一些关于您的期望的指示。请不要只发布您的要求,您需要展示您为解决问题所做的努力,并说明它在哪里以及如何未能达到您想要的效果。

标签: php arrays sorting multidimensional-array


【解决方案1】:

您可以尝试遍历 $words 数组,并为每个元素创建一个新数组(我称为 sorted)en 元素与当前的内容words 元素,并将元素的第一个单词的第一个字母作为键。

<?php
  $words = array(
      array('Agreement range','Accord'),
      array('Reception','Accueil')
  );

  $sorted = array();

  foreach($words AS $element){
    $sorted[$element[0][0]] = $element;
  }

  print_r($sorted);
?>

这是你得到的输出:

Array ( [A] => Array ( [0] => Agreement range [1] => Accord ) [R] => Array ( [0] => Reception [1] => Accueil ) )

请注意,如果您有更多第一个单词的首字母相同的元素,您将使用 sorted 数组中的该键覆盖现有元素。为了解决这个问题,如果发生这种情况,您可以按如下方式更改循环:

foreach($words AS $element){
    if(!isset($sorted[$element[0][0]]))
      $sorted[$element[0][0]] = $element;
    else
      $sorted[$element[0][0]] = array_merge($sorted[$element[0][0]],$element);
  }

【讨论】:

  • 请避免回答仅仅是需求转储的问题,并且不要表现出 OP 方面的任何努力。通过为他们完成所有工作,我们鼓励用户继续发布不符合网站指南的低质量问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多