2009-10-20 9 views
51

Что говорится в названии. В частности, если у меня естьКак сравнить 2 строки по алфавиту

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

Как я могу определить, что в алфавитном порядке $array2 «имя s должно прийти выше $array1» s?

+0

Вы можете найти [ 's ($ array1 [ 'имя']) -> CompareTo ($ array2 [ 'имя']) '] (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

ответ

76

strcmp. Если первый аргумент strcmp лексикографически меньше второго, тогда возвращаемое значение будет отрицательным. Если оба они равны, тогда он вернет 0. И если первое будет лексикографически больше второго, тогда будет возвращено положительное число.

nb. Вы, вероятно, захотите использовать , который игнорирует случай ...

1

sort

EDIT только реализованные значения из разных массивов, может array_merge первый, но не уверен, вот что вы хотите

8

Вы можете сравнить обе строки с strcmp:

Возвращает < 0, если str1 составляет менее str2; > 0, если str1 больше str2 и 0, если они равны.

1

Я часто использую natsort (Natural 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! Если вам нужно всего лишь сравнить две строки, чтобы просто найти тот, который идет первым в алфавитном порядке, это, безусловно, более легкое, самое умное решение. Тем не менее, настолько глупо, что это почти больно. –

+1

@MarcosBuarque: Я ценю это. Мне было только 8 лет с опозданием с моим ответом :-) – JMRC