2009-10-20 19 views
51

Lo que dice el título. Específicamente si tengoCómo comparar 2 cadenas alfabéticamente

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

¿Cómo puedo determinar que alfabéticamente $array2 's nombre debe estar por sobre $array1' s?

+0

Usted puede encontrar [ 's ($ matriz1 [ 'nombre']) -> compareTo ($ array2 ['name']) '] (https://github.com/deli) ght-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php # L495) o ['s ($ array1 ['name']) -> compareToIgnoreCase ($ array2 ['name'])'] (https: //github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L514) útil, como se encuentra en [esta biblioteca independiente] (https://github.com/delight-im/PHP -Str). – caw

Respuesta

76

Uso strcmp. Si el primer argumento para strcmp es lexicográficamente más pequeño que el segundo, entonces el valor devuelto será negativo. Si ambos son iguales, devolverá 0. Y si el primero es lexicográficamente mayor que el segundo, se devolverá un número positivo.

nb. Es posible que desee utilizar strcasecmp (string1,string2), que ignora caso ...

1

sort

EDITAR sólo valores realizados de diferentes matrices, podría array_merge primeros, pero no estoy seguro de que eso es lo que desea

8

Es posible comparar las dos cadenas con strcmp:

devoluciones < 0 si str1 es menor que str2; > 0 si str1 es mayor que str2, y 0 si son iguales.

1

A menudo uso natsort (Natural Sort), ya que por lo general sólo quiero preservar la matriz para su uso posterior de todos modos.

Ejemplo:

natsort($unsorted_array); 

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

Estoy un poco tarde (una vez más no un programador estaba todavía en 2009 :-) Nadie mencionó esto todavía, pero se puede simplemente utilizar los operadores de los que hace uso en el número también.

< > <= >= == != y más

Por ejemplo:

'a' > 'b' devuelve false

'a' < 'b' vuelve true

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

+1

Hombre, esta es definitivamente la mejor respuesta para este hilo y ¡no tenía un solo voto alternativo! Si solo necesita comparar dos cadenas para encontrar simplemente la que viene primero en orden alfabético, definitivamente es la solución más liviana y más inteligente. Sin embargo, tan estúpido que casi duele. –

+1

@MarcosBuarque: lo aprecio. Solo llegué 8 años tarde con mi respuesta :-) – JMRC

Cuestiones relacionadas