¿Cómo puedo ordenar esta matriz por el valor de la clave "orden"? Aunque los valores son actualmente secuenciales, no siempre lo serán.
Array
(
[0] => Array
(
[hashtag] => a7e87329b5eab8578f4f1098a152d6f4
[title] => Flower
[order] => 3
)
[1] => Array
(
[hashtag] => b24ce0cd392a5b0b8dedc66c25213594
[title] => Free
[order] => 2
)
[2] => Array
(
[hashtag] => e7d31fc0602fb2ede144d18cdffd816b
[title] => Ready
[order] => 1
)
)
Respuestas:
Pruebe usort , si todavía tiene PHP 5.2 o anterior, primero deberá definir una función de clasificación:
A partir de PHP 5.3, puede usar una función anónima:
Y finalmente con PHP 7 puedes usar el operador de nave espacial :
Para extender esto a la clasificación multidimensional, haga referencia al segundo / tercer elemento de clasificación si el primero es cero, se explica mejor a continuación. También puede usar esto para ordenar los subelementos.
Si necesita conservar las asociaciones de claves, use
uasort()
: consulte la comparación de las funciones de ordenación de matrices en el manualfuente
uasort()
si desea conservar las claves de la matriz.fuente
Yo uso esta función:
fuente
array_multisort
y, por lo tanto, no es necesario asignar previamente$sort_col
, ahorrando tiempo y memoria .&$arr
lugar de solo$arr
?Usualmente uso usort y paso mi propia función de comparación. En este caso, es muy simple:
En PHP 7 usando el operador de nave espacial:
fuente
$a['order']
es 3 y$b['order']
es 6, devolveré -3. ¿Correcto?Un enfoque para lograr esto sería así
Resultado:
fuente
Para ordenar la matriz por el valor de la tecla "título" use:
strcmp compara las cuerdas.
uasort () mantiene las claves de la matriz tal como fueron definidas.
fuente
Esto se encarga de los alfabetos en mayúsculas y minúsculas.
fuente
Uso
array_multisort()
,array_map()
MANIFESTACIÓN
fuente
array_multisort
hace referencia a su primer parámetro.El enfoque más flexible sería utilizar este método.
este es el por qué:
Puede ordenar por cualquier clave (también anidada como
'key1.key2.key3'
o['k1', 'k2', 'k3']
)Funciona tanto en matrices asociativas como no asociativas (
$assoc
flag)No usa referencia: devuelve una nueva matriz ordenada
En su caso, sería tan simple como:
Este método es parte de esta biblioteca .
fuente
Seamos realistas: php NO tiene una función simple para manejar adecuadamente cada escenario de ordenación de matriz.
Esta rutina es intuitiva, lo que significa una depuración y mantenimiento más rápidos:
fuente
global
es una gran señal de alerta y generalmente se desaconseja . ¿Por qué semysql_fetch_array
demuestra esta pregunta en lugar de la matriz fuente del OP, y que no hay una explicación de lo que está haciendo su código y cuál puede esperar que sea el resultado? En general, este es un enfoque muy complejo para lograr el resultado final deseado.global
ver: 3v4l.org/FEeFC Esto produce una variable definida explícitamente, en lugar de una que se puede cambiar y acceder globalmente.También puede ordenar la matriz multidimensional para múltiples valores como
con
Salida usando
print_r($arr)
:PS) usar strcmp sería una buena opción para comparar las cadenas.
fuente