ilch Forum » Allgemein » HTML, PHP, SQL,... » Object2Array

Geschlossen
  1. #1
    User Pic
    Balthazar3k Mitglied
    Registriert seit
    23.04.2006
    Beiträge
    422
    Beitragswertungen
    7 Beitragspunkte
    Hi Leute,

    ich versuche ein Object zu einem Mehrdimensionalen Array umzuwandeln, nur leider steigt er nicht weiter ins Objec ein als erwünscht, ich habe keinen einfall woran das liegen kann.

    // $data = new stdClass
    			$data = (array) $data;
    			array_walk_recursive( $data, function( &$item, $key )
    			{	if( is_object( $item ) )
    				{	$item = (array) $item;
    				}
    			});


    Ein Teil des ergebnis
    [talents] => Array
            (
                [0] => Array
                    (
                        [selected] => 1
                        [name] => Protection
                        [icon] => ability_paladin_shieldofthetemplar
                        [build] => 000000000000000000003202302312112110123123003200000000000000
                        [trees] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [points] => 00000000000000000000
                                        [total] => 0
                                    )
    
                                [1] => stdClass Object
                                    (
                                        [points] => 32023023121121101231
                                        [total] => 31
                                    )
    
                                [2] => stdClass Object
                                    (
                                        [points] => 23003200000000000000
                                        [total] => 10
                                    )
    
                            )
    
                        [glyphs] => stdClass Object
                            (
                                [prime] => Array
                                    (
                                        [0] => stdClass Object


    wie man sieht sind immer noch Objecte (stdClass Object) im Array.

    Als alternative Lösung wer vlt auch wie ich in objecten travesieren kann, da $obj->0->name->0 nicht geht da er die "0" als Syntax Error bezeichnet.

    Danke, mfg

    betroffene Homepage: balthazar3k.ba.funpic.de/
    Kein Support für den Raidplaner über PM.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    So wie du es hast, machst du maximal 2 Ebenen, du kannst es mit einer rekursiven Funktion machen, also eine Funktion die sich selbst wieder aufruft.

    function obj2ar(object $ob) {
        $ar = (array) $ob;
        foreach ($ar as &$entry) {
            if (is_object($entry) {
                $entry = obj2ar($entry);
            }
        }
        return $ar;
    }


    Hab es nicht getestet, aber hoffe mal so geht es.


    Zuletzt modifiziert von Mairu am 19.03.2012 - 23:13:54
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Balthazar3k Mitglied
    Registriert seit
    23.04.2006
    Beiträge
    422
    Beitragswertungen
    7 Beitragspunkte
    Ist ja mal ein Ding lächeln, wusste garnicht das "array_walk_recursive" nur 2 Ebenen absteigt, dachte immer würde in belibig vielen absteigen... vorallem da in der PHP Manual drinne steht "Diese Funktion steigt tiefer in Arrays hinab" das gleiche steht auch auf der englischen. Danke für Code, werde ich später einbauen, diese Funktion in der Funktion bauweise kenne ich auch, hab sie irgendwo mal im im ilch script gesehen und schon paar mal verwendet wollte sie aber nicht bevorzugen, warscheinlich aus obtischen gründen lächeln da ich mein array_walk.. so aufgebaut habe wie jQuery, gefällt mir am besten bisher lächeln

    Also Danke den mal lächeln
    Kein Support für den Raidplaner über PM.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Naja die Funktion wird schon rekursiv funktionieren, aber du hast ja kein Arrays sondern ein Objekt, was gecastet nur die erste Ebene als Array "umwandelt".
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten