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"
    )

8voto

Chris Jeffries Punkte 117

Hierfür ist PHP7 erforderlich, da ich eine Lambda-Funktion verwendet habe, um die 'innerfunc' innerhalb der Hauptfunktion wegzusperren. Die Lambdafunktion wird rekursiv aufgerufen, daher die Notwendigkeit für: "use ( &$innerfunc )". In PHP5 konnte man das zwar machen, aber die innerfunc nicht verstecken.

function convertArray2Object($defs) {
    $innerfunc = function ($a) use ( &$innerfunc ) {
       return (is_array($a)) ? (object) array_map($innerfunc, $a) : $a; 
    };
    return (object) array_map($innerfunc, $defs);
}

8voto

slevy1 Punkte 3689

Sie könnten zum Beispiel auch ein ArrayObject verwenden:

<?php
    $arr = array("test",
                 array("one"=>1,"two"=>2,"three"=>3), 
                 array("one"=>1,"two"=>2,"three"=>3)
           );
    $o = new ArrayObject($arr);
    echo $o->offsetGet(2)["two"],"\n";
    foreach ($o as $key=>$val){
        if (is_array($val)) {
            foreach($val as $k => $v) {
               echo $k . ' => ' . $v,"\n";
            }
        }
        else
        {
               echo $val,"\n";
        }
    }
?>

//Output:
  2
  test
  one => 1
  two => 2
  three => 3
  one => 1
  two => 2
  three => 3

7voto

Minhaj Punkte 389

Ist die Rekursion Ihr Freund:

function __toObject(Array $arr) {
    $obj = new stdClass();
    foreach($arr as $key=>$val) {
        if (is_array($val)) {
            $val = __toObject($val);
        }
        $obj->$key = $val;
    }

    return $obj;
}

6voto

Douraid Arfaoui Punkte 212

Verwenden Sie diese Funktion, die ich erstellt habe:

function buildObject($class,$data){
    $object = new $class;
    foreach($data as $key=>$value){
        if(property_exists($class,$key)){
            $object->{'set'.ucfirst($key)}($value);
        }
    }
    return $object;
}

使用方法

$myObject = buildObject('MyClassName',$myArray);

6voto

YesItsMe Punkte 1629

Einzeiler

$object= json_decode(json_encode($result_array, JSON_FORCE_OBJECT));

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