Sortiere

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

  • Sortiere

    Guten Tag,
    mein Problem leigt beim Sortieren des SimpleXMLElements. Ansteuern kann ich das ja z.b. so:

    echo $xml->proxy[2]->country;

    das ergibt logischerweise "japan", nun sind aber die daten in der XML Datei nach anderen kriterien geordnet. Für die Ausgabe möchte ich das ganze aber nach Land dem Alphabeth nach Ordnen. Mein Problem liegt nun darin das mit array fuktionen nicht geht. Die Simple XML class bietet da auch keine Sortierungsmöglichkeit.

    Dies erhalte ich mittels print_r($xml);

    PHP-Code:
    SimpleXMLElement Object
    (
        [
    proxy] => Array
            (
                [
    0] => SimpleXMLElement Object
                    
    (
                        [
    ip] => 127.0.0.1
                        
    [port] => 80
                        
    [type] => egal
                        
    [country] => china
                    
    )

                [
    1] => SimpleXMLElement Object
                    
    (
                        [
    ip] => 127.0.0.1
                        
    [port] => 80
                        
    [type] => egal
                        
    [country] => china
                    
    )

                [
    2] => SimpleXMLElement Object
                    
    (
                        [
    ip] => 127.0.0.1
                        
    [port] => 80
                        
    [type] => egal
                        
    [country] => japan
                    
    )

            )


    So lese ich die xml aus:

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    $file "proxy.xml";

    if(
    file_exists($file)) 
    {
        
    $xml simplexml_load_file($file);
        
    //print_r($xml);
        //echo $xml->proxy[2]->country;
        
    foreach ($xml->proxy AS $proxy)
        {
            
    //$proxy2 = usort($proxy, "vergleichen");
            
    $_proxy $proxy->ip.":".$proxy->port;
            echo 
    $_proxy." // ".$proxy->country."<br />\n";
        }

    else 
    {
        exit(
    'Konnte '.$file.' nicht öffnen.');
    }
    ?>
    hier noch die proxy.xml

    PHP-Code:
    <?xml version="1.0" encoding="utf-8"?>
    <server>
        <proxy>
            <ip>127.0.0.1</ip>
            <port>80</port>
            <type>egal</type>
            <country>china</country>
        </proxy>
        <proxy>
            <ip>127.0.0.1</ip>
            <port>80</port>
            <type>egal</type>
            <country>china</country>
        </proxy>
        <proxy>
            <ip>127.0.0.1</ip>
            <port>80</port>
            <type>egal</type>
            <country>japan</country>
        </proxy>
    </server>

    hoffe mal das mir jemand halfen kann bei der sortierung weiss echt grad nicht mehr weiter...

    mfg LukasS


    EDIT:
    Leider etwas zu hastig Abgesendet, war mit dem Titel noch gar nicht fertig. -_-"
    Zuletzt geändert von LukasS; 12.03.2006, 00:58.

  • #2
    Wo sortierst du denn hier?
    Wie sehen deine Ansätze aus?
    Nach was soll eigentlich sortiert werden?

    Kommentar


    • #3
      Original geschrieben von onemorenerd
      1. Wo sortierst du denn hier?
      2. Wie sehen deine Ansätze aus?
      3. Nach was soll eigentlich sortiert werden?
      1.
      Im beispiel grad nirgends.

      2.
      Das ist ja mein Problem ich habe es mit arrayfunktionen versucht klappt aber nicht ich denke das liegt daran das ich das objekt nunmal nicht mit $proxy['country'] ansteuern kann. Zu verwenden ist $proxy->country den es ist ja nicht im eigentlichen Sinne ein array sondern eben ein SimpleXMLElement Object. Nun hoffe ich mal auf einen ansetzt wie das sonst wer gelöst hat.

      3.
      ...nach Land dem Alphabeth nach Ordnen...

      EDIT:
      Wie gesagt wenn man $proxy mit is_array() prüft gibt er ja FALSE zurück sprich es ist kein Array im dem Sinne un kannn deswegen nicht wie eines sortiert werden.
      Zuletzt geändert von LukasS; 12.03.2006, 10:37.

      Kommentar


      • #4
        Schon versucht zu casten?
        PHP-Code:
        $arr = (array)$deinSimpleXMLElement

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          Schon versucht zu casten?
          PHP-Code:
          $arr = (array)$deinSimpleXMLElement
          hatte ich noch nicht versucht, so funktiniert es einwandfrei thx!

          gruss
          LukasS


          PS: hätte nicht gedacht das es so eine einfache lösung gibt..

          Kommentar

          Lädt...
          X