php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.04.2006, 17:37  
Erfahrener Benutzer
 
Registriert seit: 14.10.2005
Beiträge: 153
Fatal Error
Standard Objekte sortieren

PHP-Code:
<?php
// So sehen die Objekte aus
$objekt[1]->name
$objekt
[1]->str
$objekt
[1]->plz

$objekt
[2]->name
$objekt
[2]->str
$objekt
[2]->plz

$objekt
[3]->name
$objekt
[3]->str
$objekt
[3]->plz
?>
Nun will ich diese nach Name, Strasse oder Postleitzahl sortieren, doch wie o_0?
Nach langer suche habe ich mich entschlossen selber eine Funktion zu programmieren.
Diese wollte ich hier zur verfügung stellen ^^
ps: Meine Funktion basiert auf einer anderen ArraySort funktion, wie man sehen kann

PHP-Code:
<?php
/**
*Diese Funktion sortiert ein Array nach einer bestimmten Eigenschaft
*
*@param  array $array           Es wird ein zu sortierender Array erwartet
*@param string $eigenschaft     Es wird der Name der Eigenschaft erwartet nach der sortiert werden soll.
*@param string $sortierrichtung N für Normal und R für Reverse
*/
function arraySort($array$eigenschaft$sortierrichtung='N'){
    foreach(
$array as $index=>$value){
        
$array_eigenschaft[$index] = strtolower($value->$eigenschaft);
    }

    if(
$sortierrichtung == 'N'){
        
asort($array_eigenschaft);
    }elseif(
$sortierrichtung == 'R'){
        
arsort($array_eigenschaft);
    }

    foreach(
$array_eigenschaft as $index=>$value){
        
$sortiertes_array[$index] = $array[$index];
    }

    return 
$sortiertes_array;
}
?>

PHP-Code:
<?php
// Und so wird die Funktion anschliesend benutzt
$objekt arraySort($objekt'name''N'); // Hier wird nach der Eigenschaft 'Name' sortiert
?>
Und natürlich behalten die Objekte ihren index in dem Objektearray :P
Fatal Error ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.04.2006, 23:50  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Fatal Error,

warum hast du dich gegen usort() asort() etc. verwert? Da hättest du nur eine Compare-Methode/Funktion implementieren müssen und usort() erledigt den Rest. Man kann der Compare-Funktion auch Objekt übergeben...


Grüße,
Dr.E.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 13.04.2006, 08:51  
Erfahrener Benutzer
 
Registriert seit: 14.10.2005
Beiträge: 153
Fatal Error
Standard

Ja, aber wo kann ich da sagen nach welcher Eigenschaft er mir die Objekte sortieren muss?
Fatal Error ist offline  
Alt 13.04.2006, 13:32  
Gast
 
Beiträge: n/a
Standard

In der angegebenen cmp_function
 
Alt 13.04.2006, 14:24  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo zusammen,

@Bruchpilot: Richtig, das meinte ich eben.

@fatal Error: Ich mache dir mal ein Beispiel, das ich fix bei uns aus dem CVS gezogen haben:

PHP-Code:
   /**
   *  Klasse importlog_dataManager
   *  Implementierung der biz-Schicht zum Daten-Zugriff
   *
   *  Christian Schäfer
   *  Version 0.1, 22.02.2006
   */
   
class importlog_dataManager
   
{

      function 
importlog_dataManager(){
      }


      
/**
      *  Methode loadImportList()  [public/nonstatic]
      *  Läd eine nach Datum sortierte Import-Liste.
      *
      *  Christian Schäfer
      *  Version 0.1, 22.02.2006
      *  Version 0.2, 23.02.2006
      */
      
function loadImportList(){

         
$lIsM = new data_LastImportStateMapper('omscube10','cug');
         
$importList $lIsM->loadImportStateList();
         
$this->sortList(&$importList);
         return 
array_slice($importList,0,20);

       
// end function
      
}


      
/**
      *  Methode sortList()  [private/nonstatic]
      *  Sortiert die geladene Liste und gibt die letzten 10 ImporteLäd eine nach Datum sortierte Import-Liste.
      *
      *  Christian Schäfer
      *  Version 0.1, 22.02.2006
      */
      
function sortList(&$importList){
         
usort(&$importList,array('importlog_dataManager','compairDates'));
       
// end function
      
}


      
/**
      *  Methode compairDates()  [public/static]
      *  Statische Vergleichsfunktion für die Sortierung der Ergebnisliste.
      *
      *  Christian Schäfer
      *  Version 0.1, 23.02.2006
      */
      
function compairDates($oOne,$oTwo){

         if(
$oOne->getLastImportDate() == $oTwo->getLastImportDate()){
             return 
0;
          
// end if
         
}

         return (
$oOne->getLastImportDate() < $oTwo->getLastImportDate()) ? : -1;

       
// end function
      
}

    
// end class
   

Zur Erklärung: Ich hole mir in der Methode loadImportList() eine Liste von Objekten vom DataMapper der Applikation und sortiere diese mit Hilfe der Methode sortList(). Diese verwendet die usort()-Funktion, bei der eine eigene Compare-Methode implementiert werden muss. Diese wird dann als zweites Argument übergeben. Wichtig ist hier, dass die Liste als Referenz übergeben wird, sonst klappt das nicht. Siehe hierzu auch http://de3.php.net/manual/de/function.usort.php.

Soweit so klar?


Grüße,
Christian
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Referenzen auf Objekte innerhalb eines Arrays PHP-Fortgeschrittene 6 31.08.2009 17:06
Array sortieren mit regex Lupi PHP Tipps 2008 3 21.07.2008 15:17
Problem mit sortieren Cirrha PHP Tipps 2008 11 19.01.2008 23:05
Objekte zur Laufzeit Vererbung anhängen Zergling-new PHP-Fortgeschrittene 8 17.11.2007 17:31
solved: Sortieren von Dateiname A Hoppe PHP-Fortgeschrittene 3 14.11.2006 08:04
DECIMAL lässt sich nicht mit ORDER BY sortieren buggybugga Datenbanken 4 07.07.2006 15:43
Daten sortieren? Smily0412 Datenbanken 3 10.03.2006 21:09
[Erledigt] Objekte vergleichen PHP-Fortgeschrittene 4 08.12.2005 16:20
Nach 2 Spalten sortieren Datenbanken 2 10.07.2005 23:36
Problem beim Sortieren PHP Tipps 2005-2 5 29.06.2005 07:00
Sortieren einer Tabelle woods Datenbanken 4 02.12.2004 20:02
[Erledigt] Array case insensitiv sortieren mit ksort? PHP Tipps 2004 2 10.08.2004 15:11
Anonyme Objekte? PHP-Fortgeschrittene 18 25.07.2004 22:19
Inhalt einer datei Sortieren ???? PHP Tipps 2004 12 21.06.2004 22:56
Sortieren nach Timestamp Datenbanken 5 01.06.2004 16:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php objekte sortieren, php objekt sortieren, objekte sortieren php, php object sortieren, php objecte sortieren, objekt sortieren php, php sortieren von objekten, object sortieren php, mit usort objekte sortieren, php klasse sortieren, php object sort, sort object php, object nach datum sortieren php, php objekte sortieren nach eigenschaft, php objektliste sortieren, object sort php, php objekt ordnen, php objekt anhand von attributen sortieren, sortierung von objekten php, php sortieren eines objektes

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.