【问题标题】:How to compare 2 strings alphabetically in PHP?如何在 PHP 中按字母顺序比较 2 个字符串?
【发布时间】:2010-12-08 09:37:45
【问题描述】:

标题所说的。特别是如果我有

$array1['name'] = 'zoo';
$array2['name'] = 'fox';

如何确定$array2 的名字按字母顺序排在$array1 的上方?

【问题讨论】:

标签: php string sorting


【解决方案1】:

使用@987654321@。如果 strcmp 的第一个参数按字典顺序小于第二个,则返回的值将为负数。如果两者相等,则返回 0。如果第一个在字典上大于第二个,则返回一个正数。

注意。您可能想使用@987654322@(string1,string2),它会忽略大小写...

【讨论】:

    【解决方案2】:

    您可以将这两个字符串与strcmp 进行比较:

    如果str1小于str2,则返回 如果 str1 大于 str2 则为 0,如果它们相等则为 0。

    【讨论】:

      【解决方案3】:

      我来晚了(那么我在 2009 年还不是程序员 :-) 还没有人提到这一点,但你也可以简单地使用你在数字上使用的运算符。

      < > <= >= == !=

      例如:

      'a' > 'b' 返回false

      'a' < 'b' 返回true

      http://php.net/manual/en/language.operators.comparison.php

      重要

      有一个缺陷,你可以在下面的 cmets 中找到。

      【讨论】:

      • 伙计,这绝对是这个帖子的最佳答案,而且没有一个赞成票!如果您只需要比较两个字符串就可以简单地找到按字母顺序排在第一位的字符串,这绝对是更轻巧、最聪明的解决方案。然而,太愚蠢了,它几乎受伤了。
      • @MarcosBuarque:我很感激。我的回答晚了 8 年 :-)
      • 按预期工作。例如,'10' < '2' 的计算结果为 false,即使字符串 '10' 应该在 '2' 之前进行比较,如果您比较 按字母顺序(这就是问题所在)。这是因为每当字符串看起来像整数时,PHP 都会自动将它们转换为整数并按数字而不是按字母顺序进行比较。如果您的目标是真正按字母顺序比较,您应该按照建议使用strcmp()
      【解决方案4】:

      我经常使用natsort (Natural Sort),因为我通常只想保留数组以供以后使用。

      例子:

      natsort($unsorted_array);
      
      var_dump($usorted_array); // will now be sorted.
      

      【讨论】:

        【解决方案5】:

        sort

        EDIT 刚刚实现了来自不同数组的值,可以先array_merge,但不确定这就是你想要的

        【讨论】:

          猜你喜欢
          • 2022-01-02
          • 2012-04-29
          • 1970-01-01
          • 2013-10-22
          • 2018-05-17
          • 2013-12-16
          • 1970-01-01
          • 2019-11-04
          相关资源
          最近更新 更多