2012-06-20 19 views
5

tengo una bastante grande matriz que parecePHP especie variedad de objetos por StdClass Identificación

Array(
    [0] => stdClass Object 
     (
      [id] => 8585320 
      [title] => the title 
      [type] => page 
      [url] => link.com 
      [excerpt] => brief description 
     ) 

    [1] => stdClass Object 
     (
      [id] => 8585320 
      [title] => the title 
      [type] => page 
      [url] => link.com 
      [excerpt] => brief description 
     ) 
) 

no tengo ningún control aparente sobre la forma en que se forma la matriz, y cómo sale, parece como hay poca o ninguna lógica en ello. Pero estoy atrapado con eso. Entonces, lo que tengo que hacer es básicamente tomar la matriz ordenada numéricamente por cada objeto stdClass y luego asegurarme de que los identificadores sean de mayor a menor y no de menor a mayor. Todo mientras mantiene la estructura actual de la combinación de objetos de matriz

No puedo ni siquiera empezar a pensar ahora mismo cómo tendría que abordar la clasificación de la manera que lo necesito. Como ya ha sido un día suficientemente largo.

ACTUALIZACIÓN

public function updateRet($a, $b) { 
     return $b->id - $a->id; 
    } 
usort($ret, 'updateRet'); 

Respuesta

10

sólo tiene que utilizar usort:

function compare_some_objects($a, $b) { // Make sure to give this a more meaningful name! 
    return $b->id - $a->id; 
} 

// ... 

usort($array, 'compare_some_objects'); 

Si tiene PHP 5.3 o superior, también se puede utilizar una función anónima:

usort($array, function($a, $b) { return $b->id - $a->id; }); 
+0

Im obteniendo una comparación inválida función, estoy pensando que es su causa, tengo una matriz con los objetos dentro de ella. así que tengo que hacer que '$ b [x] -> id' de alguna manera, pero al igual que no está funcionando – chris

+0

Tengo php 5.2 – chris

+0

@chris: Utilice el primer método a continuación. Asegúrese de que la función esté definida correctamente. – Ryan

Cuestiones relacionadas