login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Objecten array sorteren (Opgelost)

Offline Sc0tTy - 23/02/2009 09:27 (laatste wijziging 23/02/2009 10:04)
Avatar van Sc0tTyPHP interesse Ik heb een array met Categorie objecten. Deze objecten hebben de functie Compare( $x )

Compare retourneerd dus of het object $x ( ook een Categorie ) alfpabetisch eerder of later komt.

Nu wil ik deze array gaan sorteren, maar hoe moet ik dat doen ? om met usort een apparte functie aan te ropen vind ik nou ook niet iets.

Ik heb er aan gedacht om een globale functie te maken die de objecten checked of ze Comparable implimenten en dan checken, maar liever doe ik gewoon een referentie naar het object zelf.

Weet iemand of dat kan en hoe ? ;-)

EDIT: ik heb het zo opgelost :

  1. /**
  2.  * Sorts the array by its object's names
  3.  * @param Object[] $array Array by reference
  4.  */
  5. function array_object_sort( &$array ) {
  6. function array_object_sort_inner( Items $x, Items $y ) {
  7. return $x->CompareTo( $y );
  8. }
  9. uasort( &$array, "array_object_sort_inner" );
  10. }


  1. /**
  2.   * Check if object name is the same, "smaller" or "bigger"
  3.   * @param Object $x Object that also impliments iComparable
  4.   * @param Boolean $sameObjectType When set to true, the object must be the same type. Default: false
  5.   * @return -1: Smaller, 0: Same, +1: Bigger
  6.   */
  7. public function CompareTo( Items $x, $sameObjectType = false ) {
  8.  
  9. // Check if class type is the same
  10. $class = get_class( $this );
  11. if ( ( $sameObjectType === true ) && !( $x instanceof $class ) ) {
  12. throw new DTOGeneral( DTOGeneral::NotInstanceOf );
  13. }
  14.  
  15. // Compare and return
  16. return strcasecmp( $this->_name, $x->GetName() );
  17. }

0 antwoorden

Gesponsorde links
Er zijn nog geen reacties op dit bericht.
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.171s