por - php sort array of objects
¿Ordenar una matriz multidimensional en PHP? (3)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo puedo ordenar matrices y datos en PHP? 7 respuestas
Tengo este tipo de matriz
array(5) {
[0]=>
array(5) {
[0]=>
string(7) "jannala"
[1]=>
string(10) "2009-11-16"
[2]=>
string(29) "
<p>Jotain mukavaa.</p>
"
[3]=>
int(12)
[4]=>
int(1270929600)
}
[1]=>
array(5) {
[0]=>
string(7) "jannala"
[1]=>
string(10) "2009-11-16"
[2]=>
string(51) "
<p>Saapumiserä II/09 astuu palvelukseen</p>
"
[3]=>
int(11)
[4]=>
int(1270929600)
}
...
}
Lo que necesito hacer es ordenar la matriz en función de la matriz [x] [4] (el valor de marca de tiempo de Unix). ¿Cómo lograría esto?
Estaba luchando con la función "comparar" anterior, pero pude hacer que esto funcionara:
function cmp($a, $b)
{
if ($a[''4''] == $b[''4'']) {
return 0;
}
return ($a[''4''] > $b[''4'']) ? -1 : 1;
}
usort($array, "cmp");
(Tenga en cuenta que esto también es un tipo descendente, no ascendente).
Solo mi pensamiento inicial: envolver cada una de las matrices anidadas en un objeto (instancia de clase), de modo que una vez ordenado por un campo específico (en este caso, la marca de tiempo de Unix), puede acceder fácilmente a la otra información utilizando el mismo referencia de objeto
Por lo tanto, su matriz anidada de matrices puede convertirse en una matriz de objetos, cada uno de los cuales tiene un método de "ordenamiento".
use una función de comparación, en este caso, compara el valor de marca de tiempo de unix de la matriz:
function compare($x, $y) {
if ( $x[4] == $y[4] )
return 0;
else if ( $x[4] < $y[4] )
return -1;
else
return 1;
}
y luego usort
usando la función de usort
esta manera:
usort($nameOfArray, ''compare'');
Esta función clasificará una matriz por sus valores utilizando una función de comparación proporcionada por el usuario. Si la matriz que desea ordenar debe clasificarse según criterios no triviales, debe usar esta función.