2009-10-20 76 views
51

标题说什么。具体来说,如果我有如何比较2个字符串字符串

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

我如何能够确定按字母顺序$array2的名字应该来上述$array1的?

+0

您可能会发现['S($数组1 [ '名'] ) - >的compareTo($数组2 [ '名称'])'](https://github.com/deli ght-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L495)或['s($ array1 ['name']) - > compareToIgnoreCase($ array2 ['name'])'](https: //github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L514)很有帮助,在[这个独立的库](https://github.com/delight-im/PHP -Str)。 – caw 2016-07-27 00:39:48

回答

76

使用strcmp。如果strcmp的第一个参数按字典顺序小于第二个,那么返回的值将是负数。如果两者相等,则它将返回0.如果第一个字典大于第二个,那么将返回一个正数。

nb。您可能想要使用strcasecmp (string1,string2),它忽略大小写...

8

您可以strcmp两个字符串比较什么:

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

1

我经常使用natsortNatural Sort),因为我通常只是想保留数组以备后用。

例子:

natsort($unsorted_array); 

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

我有点晚了(当时我又是不是一个程序员,但在2009年:-)没有人提到这一点,但你可以简单地使用您所使用的运营商数量也是如此。

< > <= >= == !=

例如:

'a' > 'b'回报false

'a' < 'b'回报true

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

+1

男人,这绝对是这个线程的最佳答案,它没有一个单独的upvote!如果你只需要比较两个字符串来简单地找到按字母顺序排列的字符串,那绝对是更轻,最聪明的解决方案。然而,它很愚蠢,几乎很痛。 – 2017-08-30 00:42:46

+1

@MarcosBuarque:我很感激。我只有8年,我的回答太晚了:-) – JMRC 2017-09-05 17:11:23