Sortiere

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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. -_-"
    Last edited by LukasS; 11-03-2006, 23:58.

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

    Comment


    • #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.
      Last edited by LukasS; 12-03-2006, 09:37.

      Comment


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

        Comment


        • #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..

          Comment

          Working...
          X