2009-10-20 2 views
51

Cosa dice il titolo. In particolare se hoCome confrontare 2 stringhe alfabeticamente

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

Come posso stabilire che in ordine alfabetico $array2 's nome dovrebbe venire sopra $array1' s?

+0

Si potrebbe trovare [ 's ($ array1 [ 'name']) -> compareTo ($ array2 [ 'name']) '] (https://github.com/deli ght-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php # L495) o ['s ($ array1 ['nome']) -> compareToIgnoreCase ($ array2 ['nome'])'] (https: //github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L514) utile, come trovato in [questa libreria standalone] (https://github.com/delight-im/PHP -Str). – caw

risposta

76

Utilizzare strcmp. Se il primo argomento di strcmp è lessicograficamente più piccolo al secondo, il valore restituito sarà negativo. Se entrambi sono uguali, restituirà 0. E se il primo è lessicograpicamente maggiore del secondo, verrà restituito un numero positivo.

nb. Probabilmente si desidera utilizzare strcasecmp (string1,string2), che ignora il caso ...

1

sort

EDIT solo i valori riscontrati da diversi array, potrebbe array_merge primi ma non è sicuro è ciò che si desidera

8

Puoi confrontare entrambe le stringhe con strcmp:

Restituisce < 0 se str1 è inferiore a str2; > 0 se str1 è maggiore di str2 e 0 se sono uguali.

1

Io uso spesso natsort (Natural Sort), poiché di solito voglio solo conservare l'array per un uso successivo comunque.

Esempio:

natsort($unsorted_array); 

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

Sono un po 'in ritardo (poi di nuovo non un programmatore ero ancora nel 2009 :-) Nessuno ha menzionato questo ancora, ma si può semplicemente utilizzare gli operatori che si utilizza anche sul numero.

< > <= >= == != più

Ad esempio:

'a' > 'b' restituisce false

'a' < 'b' rendimenti true

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

+1

Man, questa è sicuramente la migliore risposta per questo thread e non ha avuto un singolo upvote! Se hai solo bisogno di confrontare due stringhe per trovare semplicemente quello che viene prima in ordine alfabetico, è sicuramente la soluzione più leggera e intelligente. Eppure, così stupido fa quasi male. –

+1

@MarcosBuarque: lo apprezzo. Avevo solo 8 anni di ritardo con la mia risposta :-) – JMRC