505 Stimmen

Wie konvertiert man ein Array in ein Objekt in PHP?

Wie kann ich ein Array wie dieses 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"
    )

824voto

jlb Punkte 17760

Im einfachsten Fall ist es wahrscheinlich ausreichend, das Array als Objekt zu "casten":

$object = (object) $array;

Eine andere Möglichkeit wäre, eine Standardklasse als Variable zu instanziieren und eine Schleife durch Ihr Array zu ziehen, während Sie die Werte neu zuweisen:

$object = new stdClass();
foreach ($array as $key => $value)
{
    $object->$key = $value;
}

Als Edson Medina darauf hingewiesen, ist eine wirklich saubere Lösung die Verwendung der eingebauten json_ Funktionen:

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

Dies wandelt auch (rekursiv) alle Ihre Sub-Arrays in Objekte um, was Sie vielleicht wollen, vielleicht aber auch nicht. Leider hat es eine 2-3x Performance-Hit über das Schleifenverfahren.

Warnung! (Dank an Ultra für den Kommentar):

json_decode auf verschiedenen Umgebungen konvertiert UTF-8-Daten auf unterschiedliche Weise. Am Ende erhalte ich lokal den Wert "240.00" und in der Produktion "240" - ein riesiges Desaster. Außerdem, wenn die Konvertierung fehlschlägt, wird der String als NULL zurückgegeben.

181voto

Shahbaz Punkte 3293

Können Sie ein Array einfach durch Type Casting in ein Objekt umwandeln.

// *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;

168voto

johannes Punkte 15447

Der einfachste Weg wäre

$object = (object)$array;

Aber das ist nicht das, was Sie wollen. Wenn Sie Objekte wollen, wollen Sie etwas erreichen, aber das fehlt in dieser Frage. Es macht keinen Sinn, Objekte nur deshalb zu verwenden, weil man Objekte verwendet.

129voto

Edson Medina Punkte 9007

Schnelles Hacken:

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

Nicht schön, aber funktioniert.

106voto

Julius F Punkte 3314

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. Wandeln Sie das Array in ein Objekt um, indem Sie es in ein Objekt casten:

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

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X