riesen? Array sortieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • riesen? Array sortieren

    Huhu

    Neuer tag, neues Glück.
    Ich möchte ein riesen großes Array sortieren. Aber dieses Array sieht von komisch aus, da das Array von einer XML datei erzeugt wird.

    Code:
    (
        [blueprints] => Array
            (
                [0] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [id] => 69800
                                [name] => Geburtstags-Torte
                                [user_id] => 4
                                [position] => 24
                                [metal] => 650
                                [crystal] => 2950
                                [soldiers] => 20
                                [build_time] => 3600
                                [ground] => 0
                                [user_name] => Lurz
                                [last_change] => 1214192267
                                [armor] => 50
                                [attack] => 0
                                [shield] => 0
                                [speed] => 4500
                                [anti_need] => 15
                                [anti_cap] => 15
                                [fixed] => 0
                                [image] => gfx/ships/no_image.gif
                                [description] => 
                                [size] => 1
                                [bonus] => 0
                                [cargo] => 0
                                [hangars] => 0
                                [decks] => 0
                                [sensors] => 0
                                [agility] => 0.8
                                [deck_size] => 1
                                [can_colonize] => 0
                                [can_recycle] => 0
                            )
    
                    )
    
                [1] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [id] => 69801
                                [name] => Geburtstags-Bier
                                [user_id] => 4
                                [position] => 25
                                [metal] => 650
                                [crystal] => 2950
                                [soldiers] => 20
                                [build_time] => 3600
                                [ground] => 0
                                [user_name] => Lurz
                                [last_change] => 1214192267
                                [armor] => 50
                                [attack] => 0
                                [shield] => 0
                                [speed] => 4500
                                [anti_need] => 15
                                [anti_cap] => 15
                                [fixed] => 0
                                [image] => gfx/ships/no_image.gif
                                [description] => 
                                [size] => 1
                                [bonus] => 0
                                [cargo] => 0
                                [hangars] => 0
                                [decks] => 0
                                [sensors] => 0
                                [agility] => 0.8
                                [deck_size] => 1
                                [can_colonize] => 0
                                [can_recycle] => 0
                            )
    
                    )
    Hat jemand Ahnung wie ich dieses Array nach [position] sortieren lassen kann ?
    Ich hab jetzt x Varianten versucht, mit uasort und alles mögliche, allerdings
    will sich dieses hübsche Array nicht sortieren lassen

    Ausgegeben hab ich diese Arrays von den XML Dateien immer mit




    PHP-Code:
        $xml simplexml_load_file('blue.xml'); 
        foreach(
    $xml->blueprints as $data) {


    ich währe euch sehr dankbar wenn ihr mir helfen könntet

  • #2
    Zeig mal deinen Versuch mit uasort().

    Kommentar


    • #3
      Je nachdem wie die Daten nach der Sortierung weiterverarbeitet oder ausgegeben werden sollen wäre ggf. auch hier etwas:
      http://de.selfhtml.org/xml/darstellu...mente.htm#sort
      Kommt wie gesagt drauf an wie es mit den Daten weitergeht und ob du überhaupt mit XSL umgehen kannst - aber wenn man sich da mal hineingearbeitet hat, ist es echt ein super Werkzeug
      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
      Schön - etwas Geschichte kann ja nicht schaden.
      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

      Kommentar


      • #4
        PHP-Code:
        <?php

            
        //Ungefähr dein Array
            
        $blueprints =    array
                            (
                                array
                                (
                                    
        '@attributes' => array
                                    (
                                       
        'position' => 0,
                                       
        'name' => "Null"
                                    
        )
                                ),
                                
                                array
                                (
                                    
        '@attributes' => array
                                    (
                                        
        'position' => 4,
                                        
        'name' => "Vier"
                                    
        )
                                ),
                                
                                array
                                (
                                    
        '@attributes' => array
                                    (
                                        
        'position' => 7,
                                        
        'name' => "Sieben"
                                    
        )
                                ),
                                
                                array
                                (
                                    
        '@attributes' => array
                                    (
                                        
        'position' => 1,
                                        
        'name' => "Eins"
                                    
        )
                                ),
                                
                                array
                                (
                                    
        '@attributes' => array
                                    (
                                        
        'position' => 8,
                                        
        'name' => "Acht"
                                    
        )
                                )
                            );

            
        //Hilfsarray
            
        $positions = array();
            
            
        /*
                - Jedes Element durchgehen
                - 1. Key ist das unterste Feld 'position'
                - 2. Key ist einfach eine Zahl, damit kein Eintrag überschrieben wird
                - Gespeichert wird darin der komplette BluePrints Eintrag
            */
            
        for($i 0$i count($blueprints); $i++)
                
        $positions[$blueprints[$i]['@attributes']['position']][$i] = $blueprints[$i];
            
            
        //Nach Position wird sortiert
            
        ksort($positionsSORT_NUMERIC);
            
            
        //BluePrints löschen
            
        unset($blueprints);
            
            
        //neu anlegen
            
        $blueprints = array();
            
            
        //Daten wieder zurückholen
            
        foreach($positions as $pos => $obj)
                foreach(
        $positions[$pos] as $num => $data)
                    
        $blueprints[] = $data;

            
        //Ausgabe
            
        print_r($blueprints);

        ?>
        Ausgabe:
        PHP-Code:
        Array
        (
            [
        0] => Array
                (
                    [@
        attributes] => Array
                        (
                            [
        position] => 0
                            
        [name] => Null
                        
        )

                )

            [
        1] => Array
                (
                    [@
        attributes] => Array
                        (
                            [
        position] => 1
                            
        [name] => Eins
                        
        )

                )

            [
        2] => Array
                (
                    [@
        attributes] => Array
                        (
                            [
        position] => 4
                            
        [name] => Vier
                        
        )

                )

            [
        3] => Array
                (
                    [@
        attributes] => Array
                        (
                            [
        position] => 7
                            
        [name] => Sieben
                        
        )

                )

            [
        4] => Array
                (
                    [@
        attributes] => Array
                        (
                            [
        position] => 8
                            
        [name] => Acht
                        
        )

                )


        Find Parties?
        Partysuche

        Kommentar

        Lädt...
        X