Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalt von print_r( $object ) in einem assoc-Array ausgeben ?

Einklappen

Neue Werbung 2019

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

  • Inhalt von print_r( $object ) in einem assoc-Array ausgeben ?

    Wie kann ich den Inhalt von print_r( $object ) in einem assoc-Array ausgeben oder das Array so bauen, dass ich die gleiche Struktur wie bei der Ausgabe von print_r() erhalte ?
    Das Problem besteht darin, dass immer nur eine Ebene eines Objektes in ein Array gewandelt werden kann, alle inneren Zweige des objektes bleiben Verborgen und sind nur in der Ausgabe mit print_r sichtbar. Sinn des Ganzen sol sein, dass ich mir eine Methode schreiben kann, der ich ein Objekt beliebigen Typs übergebe und dann über den Weg eines Array zu einem JSON-String komme, den ich speichern kann.

    Ich hab auch schon serialisieren probiert, bekomme aber hier auch kein JSON zusammen.


  • #2
    Das geht imho schon via json, das true darf man im zweiten nicht vergessen.
    PHP-Code:
    json_encodejson_decode(, true) ); 
    Hast du mal ein konkretes Beispiel?
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Ich kann die die Beispieldaten ( ca. 1/2 A4 groß ) als TXT per PN senden. Die Daten sind nicht für Öffentlichkeit.

      Kommentar


      • #4
        Uns interessieren nicht deine geheimen Daten, sondern ein auf ein Minimum reduziertes fiktives Beispiel welches dein Problem verdeutlicht.

        Kommentar


        • #5
          CodeDesigner bitte auf ein lauffähiges kleines anonymes Beispiel reduzieren, dann können wir damit was anfangen. Mit dem langen Dump den du mir geschickt hast kann ich nichts anfangen, ich tippe den jetzt nicht ab, oder was auch immer. Danke!
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            check!

            Kommentar


            • #7
              [Offtopic]
              Bei hausl steht zudem im am Fusse -> Kein Support per PN
              Gelbe Karten sollte man einführen.

              Kommentar


              • #8
                Zitat von CodeDesigner Beitrag anzeigen
                Sinn des Ganzen sol sein, dass ich mir eine Methode schreiben kann, der ich ein Objekt beliebigen Typs übergebe und dann über den Weg eines Array zu einem JSON-String komme, den ich speichern kann.
                http://php.net/jsonserializable

                Kommentar


                • #9
                  Ich hab mal schnell ein minimalistisches Beispiel zusammengehämmert, damit das Prinzip verstanden wird.

                  PHP-Code:

                  <?php
                  class Klasse_A {
                      private 
                  $hallo 'Welt!';
                  }
                  class 
                  Klasse_B {
                      private 
                  $welt;
                      public function 
                  __construct(){
                          
                  $this -> welt = new Klasse_A();
                      }
                  }
                  $var1 = new Klasse_A();
                  $var2 = new Klasse_B();
                  $array = ['foo' => $var1 'quux' => $var2 ];
                  // Ich zeige alles an # Das will ich gern als JSON
                  print_r$array );
                  // Ich zeige nix an # Das nützt mir nix
                  echo json_encode$arrayJSON_PRETTY_PRINT);
                  ?>
                  Code zum rumspielen : https://repl.it/@alphac/AwareSeriousEngineers


                  Kommentar


                  • #10
                    Ein anderer Ansatz wäre das deserialisierte Objekt neu als Array oder besser als JSON zusammenzusetzen. Da muss ich aber erstmal schauen wie das Format aufgebaut ist.

                    Kommentar


                    • #11
                      Auf SO hab ich nen Hinweis zu einer bestehenden Lösung gefunden. Evtl was für Leute, die das gleiche Problem lösen wollen.
                      https://github.com/mindplay-dk/jsonf...Serializer.php

                      Kommentar


                      • #12
                        Ich hab mal schnell ein minimalistisches Beispiel zusammengehämmert, damit das Prinzip verstanden wird.
                        Wenn Klasse_A und Klasse_B jeweils das JsonSerializable-Interface implementieren, funktioniert das mit json_encode().

                        Kommentar


                        • #13
                          Zitat von Dormilich Beitrag anzeigen
                          Wenn Klasse_A und Klasse_B jeweils das JsonSerializable-Interface implementieren, funktioniert das mit json_encode().
                          Das ist leider überhaupt keine Lösung, denn ich werde nicht ein bestehendes Projekt mit mehreren hundert Klassen umschreiben, um so etwas scheinbar simples umzusetzen.
                          Das ist ne Lösung zum rumspielen, aber nichts, was in der Praxis standhält.

                          Kommentar


                          • #14
                            Dann arbeite doch einfach mit Reflections und bau dir deinen eigenen Converter.

                            Kommentar


                            • #15
                              Erst mit #9 hatte ich so eine leichte eine Ahnung was du machen möchtest.
                              Aus einem Objekt wird selten "Alles" gebraucht. Besser finde ich du bestimmst im Objekt selbst was ins JSON rein soll/muss. JsonSerializable Interface heist das Zauberwort dazu.
                              PHP-Code:
                              class implements JsonSerializable{
                                private 
                              $hallo 'Welt!';

                                public function 
                              jsonSerialize(){
                                  return [
                              "hallo" => $this->hallo,];
                                }
                              }

                              $objA = new A;
                              $array = ['foo' => $objA];

                              $jStr json_encode($array);
                              var_dump($jStr);  //string(25) "{"foo":{"hallo":"Welt!"}}" 
                              LG jspit

                              Edit: Hatte die letzten Beiträge noch nicht gelesen. Ist das Einfügen je einer Zeile + Methode wirklich dir zu aufwendig?

                              Kommentar

                              Lädt...
                              X