2009-10-20 83 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