Wie konvertiert man ein Array in ein Objekt in PHP?

Lesezeit: 5 Minuten

Wie konvertiert man ein Array in ein Objekt in PHP
Straßenparade

Wie kann ich ein solches Array in ein Objekt umwandeln?

[128] => Array
    (
        [status] => "Figure A.
 Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution."
    )

[129] => Array
    (
        [status] => "The other day at work, I had some spare time"
    )

  • Welche Art von Objekt möchten Sie genau erhalten? Was ich meine ist: was sollten die Attribute sein?

    – Pascal Martin

    8. Dezember 2009 um 18:58 Uhr

  • In einer Schleife sollte es beides sein, da der Status ein Datenarray ist, sodass beide gedruckt werden

    – Straßenparade

    8. Dezember 2009 um 19:08 Uhr

  • nicht sicher ab wann, aber das funktioniert einfach: $a = (object)['hello' => 'world'];

    Benutzer1267177

    5. November 2016 um 11:44 Uhr


Sie können einfach die Typumwandlung verwenden, um ein Array in ein Objekt umzuwandeln.

// *convert array to object* Array([id]=> 321313[username]=>shahbaz)
$object = (object) $array_name;

//now it is converted to object and you can access it.
echo $object->username;

  • funktioniert nicht, das habe ich getan, bevor ich die Frage hier gestellt habe, also muss es einen anderen Weg geben, dies zu tun

    – Straßenparade

    8. Dezember 2009 um 19:00 Uhr

  • Warum muss er seinen Grund angeben, warum er Objekte verwenden möchte? Ich glaube nicht, dass das relevant ist wie es ist fertig. Vielleicht muss er sie json_encoden oder serialisieren? Es kann Dutzende von Gründen geben, dies zu tun.

    – Zombie

    8. Dezember 2009 um 19:06 Uhr

  • hmm .. ich habe mir die Browserausgabe angesehen, es sieht so aus Objekt (stdClass) # 150 (130) { [0]=> Array(1) { [“status”]=> string(130) “Endlich müssen sich Mac- und Linux-Benutzer nicht wie Bürger zweiter Klasse im Chrome-Land fühlen: Sie haben eine offizielle Beta-Version …” } offiziell ist das ein Objekt, aber wie man das iteriert Ich kann auf den Status wie $obj->status zugreifen. Irgendeine Idee?

    – Straßenparade

    8. Dezember 2009 um 19:06 Uhr

  • zombat, JSON-Codierung ist kein Grund für die Verwendung eines Objekts, es gibt ein Flag für json_encode(), um Objekte zu verwenden. Beim Serialisieren bräuchte man einen bestimmten Objekttyp, der vom Empfänger erwartet wird. Und im Allgemeinen versuche ich, mit dem zu helfen tatsächlich Problem. für mich impliziert diese frage, dass an anderer stelle ein architektonischer fehler vorliegt.

    – Johannes

    8. Dezember 2009 um 19:15 Uhr

Schnell hacken:

// assuming $var is a multidimensional array
$obj = json_decode (json_encode ($var), FALSE);

Nicht schön, aber funktioniert.

  • Ich liebe diese Lösung wirklich, die Verwendung integrierter Funktionen anstelle von benutzerdefinierten ist immer schneller, und diese funktioniert großartig. Danke für den Tipp.

    – aknatn

    26. Mai 2012 um 20:17 Uhr

  • @Oddant, um @EdsonMedina gegenüber fair zu sein, gibt die ursprüngliche Frage nicht an, welche Sichtbarkeit die Attribute benötigen, und da OP sie nicht verwendet $this In den Kommentaren, die als Zugriffsberechtigter folgen, wird stark impliziert, dass er/sie a wünscht stdClass -Instanz als Ausgabe und keine benutzerdefinierte Klasse, wie sie Ihre Antwort verwendet. Ich stimme der Eleganz dieser Lösung zu, aber leider ist es ein ziemlich häufig verwendetes Muster, um dieses Problem mit verschachtelten Arrays zu lösen, bei denen das Casting in ein Objekt nicht funktioniert. Es ist auch möglich, dass OP eine Schnittstelle verwendet, die ein Objekt als Eingabe und kein Array erfordert.

    – DiakonDesperado

    19. Juni 2013 um 19:49 Uhr


  • Vergessen Sie nicht, dass Sie auf diese Weise alle außer den Grundtypen verlieren. DateTime wird zum Beispiel Konverter stdObject sein.

    – Denis Pschenow

    4. November 2014 um 17:33 Uhr

  • Ich habe gerade bemerkt, dass dies für einfache Arrays wie dieses nicht funktioniert: json_decode(json_encode([‘test’]),falsch); Dies ergibt das gleiche Array, das für die Eingabe verwendet wurde

    – John Doe

    28. Juni 2018 um 14:12 Uhr


  • @JohnDoe Die Frage bezieht sich auf assoziative Arrays, nicht auf einfache Arrays.

    – Edson Medina

    29. Juni 2018 um 16:15 Uhr

Wie konvertiert man ein Array in ein Objekt in PHP
ChrisForence

Hier sind drei Möglichkeiten:

  1. Fälschen Sie ein echtes Objekt:

    class convert
    {
        public $varible;
    
        public function __construct($array)
        {
            $this = $array;
        }
    
        public static function toObject($array)
        {
            $array = new convert($array);
            return $array;
        }
    }
    
  2. Konvertieren Sie das Array in ein Objekt, indem Sie es in ein Objekt umwandeln:

    $array = array(
        // ...
    );
    $object = (object) $array;
    
  3. Konvertieren Sie das Array manuell in ein Objekt:

    $object = object;
    foreach ($arr as $key => $value) {
        $object->{$key} = $value;
    }
    

  • Ich liebe diese Lösung wirklich, die Verwendung integrierter Funktionen anstelle von benutzerdefinierten ist immer schneller, und diese funktioniert großartig. Danke für den Tipp.

    – aknatn

    26. Mai 2012 um 20:17 Uhr

  • @Oddant, um @EdsonMedina gegenüber fair zu sein, gibt die ursprüngliche Frage nicht an, welche Sichtbarkeit die Attribute benötigen, und da OP sie nicht verwendet $this In den Kommentaren, die als Zugriffsberechtigter folgen, wird stark impliziert, dass er/sie a wünscht stdClass -Instanz als Ausgabe und keine benutzerdefinierte Klasse, wie sie Ihre Antwort verwendet. Ich stimme der Eleganz dieser Lösung zu, aber leider ist es ein ziemlich häufig verwendetes Muster, um dieses Problem mit verschachtelten Arrays zu lösen, bei denen das Casting in ein Objekt nicht funktioniert. Es ist auch möglich, dass OP eine Schnittstelle verwendet, die ein Objekt als Eingabe und kein Array erfordert.

    – DiakonDesperado

    19. Juni 2013 um 19:49 Uhr


  • Vergessen Sie nicht, dass Sie auf diese Weise alle außer den Grundtypen verlieren. DateTime wird zum Beispiel Konverter stdObject sein.

    – Denis Pschenow

    4. November 2014 um 17:33 Uhr

  • Ich habe gerade bemerkt, dass dies für einfache Arrays wie dieses nicht funktioniert: json_decode(json_encode([‘test’]),falsch); Dies ergibt das gleiche Array, das für die Eingabe verwendet wurde

    – John Doe

    28. Juni 2018 um 14:12 Uhr


  • @JohnDoe Die Frage bezieht sich auf assoziative Arrays, nicht auf einfache Arrays.

    – Edson Medina

    29. Juni 2018 um 16:15 Uhr

Sein Weg zu einfach, Dies wird auch ein Objekt für rekursive Arrays erstellen:

$object = json_decode(json_encode((object) $yourArray), FALSE);

  • Vorbeigehen false zu json_decode() gibt ein assoziatives Array zurück.

    – Rostig

    25. Oktober 2016 um 8:23 Uhr

  • @ user3284463 Bestanden true zu json_decode gibt ein assoziatives Array zurück, false ist der Standardwert und gibt ein zurück StdClass Beispiel.

    – Elliot Reed

    11. September 2018 um 17:54 Uhr

989930cookie-checkWie konvertiert man ein Array in ein Objekt in PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy