php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.07.2005, 16:06  
Gast
 
Beiträge: n/a
Standard array sortieren...

Hallo zusammen,

ich habe ein Array, in dem Namen stehen:
Vorname1 Nachname1
Vorname2 Nachname2
usw.

Diese sortiere ich nun mit sort() nach den Vornamen.
Ich würde die nun gerne auch nach den Nachnamen sortieren. Ich weiß aber nicht, wie ich da ran gehen soll.

Wäre toll, wenn mir jemand weiterhelfen könne.
Gruß
Penny
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.07.2005, 16:09  
Gast
 
Beiträge: n/a
Standard

sieht Dein Feld eher so aus
PHP-Code:
<?php
$arr 
= array(
        array(
'Vorname1''Nachname1'),
        array(
'Vorname2''Nachname2')
    );
?>
oder eher so
PHP-Code:
<?php
$arr 
= array(
        
'Vorname1 Nachname1',
        
'Vorname2 Nachname2'
    
);
?>
?
 
Alt 18.07.2005, 16:22  
Gast
 
Beiträge: n/a
Standard

ich lese eine Datei ein, in der in jeder Zeile ein vollständiger Name steht.

Ich denke, dass dass array, dann wie das zeite aussieht.
 
Alt 18.07.2005, 16:28  
Gast
 
Beiträge: n/a
Standard

jupp.
Beide Varianten kannst Du mittels http://php.net/usort sortieren.
Bei der zweiten Variante musst Du wenigstens innerhalb der Vergleichsfunktion die Zeichenkette auftrennen, z.B. an Leerzeichen trennen.
 
Alt 18.07.2005, 17:00  
Gast
 
Beiträge: n/a
Standard

also irgendwie bin ich da am verzweifeln. wenn ich die sachen am leerzeichen splitten will,

kommt immer die Fehlermeldung split(): REG_EMPTY .

Ich weiß auch ehrlich gesagt gar nciht, wie ich dann danach weiter machen soll, wenn ich die Sachen getrennt habe.
 
Alt 18.07.2005, 17:07  
Erfahrener Benutzer
 
Registriert seit: 18.07.2005
Beiträge: 154
iRadiaX
iRadiaX eine Nachricht über ICQ schicken iRadiaX eine Nachricht über AIM schicken
Standard

Zeig uns mal den Code, dann können wir eventuelle Fehler finden und beheben
__________________
Quedilo - Downloads schneller finden
iRadiaX ist offline  
Alt 18.07.2005, 17:29  
Gast
 
Beiträge: n/a
Standard

split() -> regulärer Ausdruck erwartet
explode() -> "nur" Trennzeichen erwartet

siehe auch:
http://php.net/split
http://php.net/explode
 
Alt 18.07.2005, 17:38  
Gast
 
Beiträge: n/a
Standard

so, hier nun mal mein code, den ich mehr oder weniger erfolgreich zusammengebastelt habe.
Code:
if($do == "sort" && $art == "nach")
{
    //Datei namen.txt öffnen
    $datei_vornamen = "listen/vornamen.txt";  
    //Wenn die Datei existiert
    if(file_exists($datei_vornamen))
    {
        // Datei öffnen: 
        $file = fopen($datei_vornamen,'r+');
        // Wenn Öffnen erfolgreich -> Dann los: 
        if($file)
        {
            //Inhalt der Textdatei in ein Array einlesen
            $namen = file($datei_vornamen); 
            fclose($file);
        } 
        else
        {
            echo 'Datei konnte nicht geöffnet werden!';
        } 
        //Trim() entfernt Leerzeichen am Anfang und am Ende
        $person = trim($namen);
        function cmp ($a, $b) 
        {
             //Namen in Vorname und Nachname aufsplitten
             
             list($vorname, $nachname) = explode("", $a);
             if ($a == $b) return 0;
             return ($a < $b) ? -1 : 1;
        }
        usort ($namen, "cmp");

        while (list ($key, $value) = each ($namen)) {
        echo "$key: $value\n";
}
 
    }     
    //Wenn die Datei nicht existiert
    else
    {    
        echo'<center><table width=500>
            <td align=center>
                Es ist ein Fehler aufgetreten. 
            </td>
        </table>';
    }   
}

Bei der Zeile
Code:
echo 'test ' .$nachname;
werden alle Namen nach Vornamen sortiert ausgegeben
 
Alt 18.07.2005, 18:35  
Gast
 
Beiträge: n/a
Standard

Zitat:
explode("", $a);
Leerzeichen vergessen?
 
Alt 18.07.2005, 18:51  
Gast
 
Beiträge: n/a
Standard

ne, daran liegt es leider nicht.

bei dem split läuft schon was falsch. danach habe ich in als nachnamen zwei mal den gleichen drin und einer fehlt dafür.
wenn ic auch die vornamen ausgeben lasse, passen die zusammen, also vor und nachname in der richtigen reihenfolge in den beiden variablen, nur einer ist halt doppelt und einer fehlt dafür. ist die frage, ob das was zu sagen hat.

Der sortiert was. Die reihenfolge der Namen, die ausgegeben werden ist auf jeenfall anders, als die wie sie in der Datei stehen, aber sie werden voll durcheinander sortiert.
 
 


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
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array sortieren mit regex Lupi PHP Tipps 2008 3 21.07.2008 15:17
Array nach bestimmter Spalte sortieren GELight PHP Tipps 2006 4 19.08.2006 23:42
Mehrdimensionales Array sortieren Unbekanntes_Pferd PHP Tipps 2006 6 23.05.2006 20:42
array richtig sortieren, dann ausgeben Heart PHP Tipps 2006 5 28.04.2006 20:23
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Array verkehrt sortieren (key) // letzter Arrayeintrag PHP Tipps 2005-2 5 20.09.2005 15:55
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array sortieren PHP Tipps 2005 7 15.05.2005 02:14
2 Array in Abhänigkeit sortieren? PHP Tipps 2005 4 10.02.2005 20:31
Array mit Gruppen: Wie Sortieren PHP Tipps 2005 2 29.01.2005 15:15
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datei öffnen und mit arrays sortieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:24 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.