How to convert an array into an object using stdClass() [duplicate] How to convert an array into an object using stdClass() [duplicate] php php

How to convert an array into an object using stdClass() [duplicate]


You just add this code

$clasa = (object) array(            'e1' => array('nume' => 'Nitu', 'prenume' => 'Andrei', 'sex' => 'm', 'varsta' => 23),            'e2' => array('nume' => 'Nae', 'prenume' => 'Ionel', 'sex' => 'm', 'varsta' => 27),            'e3' => array('nume' => 'Noman', 'prenume' => 'Alice', 'sex' => 'f', 'varsta' => 22),            'e4' => array('nume' => 'Geangos', 'prenume' => 'Bogdan', 'sex' => 'm', 'varsta' => 23),            'e5' => array('nume' => 'Vasile', 'prenume' => 'Mihai', 'sex' => 'm', 'varsta' => 25));

If you want to see is this stdClass object just call this

print_r($clasa);

If you want to convert an array to object code will be

$arr = array('a'=>'apple','b'=>'ball');$arr = (object) $arr;

You don't need to use stdClass. It will automatically converted to stdClass


The quick and dirty way is using json_encode and json_decode which will turn the entire array (including sub elements) into an object.

$clasa = json_decode(json_encode($clasa)); //Turn it into an object

The same can be used to convert an object into an array. Simply add , true to json_decode to return an associated array:

$clasa = json_decode(json_encode($clasa), true); //Turn it into an array

An alternate way (without being dirty) is simply a recursive function:

function convertToObject($array) {    $object = new stdClass();    foreach ($array as $key => $value) {        if (is_array($value)) {            $value = convertToObject($value);        }        $object->$key = $value;    }    return $object;}

or in full code:

<?php    function convertToObject($array) {        $object = new stdClass();        foreach ($array as $key => $value) {            if (is_array($value)) {                $value = convertToObject($value);            }            $object->$key = $value;        }        return $object;    }    $clasa = array(            'e1' => array('nume' => 'Nitu', 'prenume' => 'Andrei', 'sex' => 'm', 'varsta' => 23),            'e2' => array('nume' => 'Nae', 'prenume' => 'Ionel', 'sex' => 'm', 'varsta' => 27),            'e3' => array('nume' => 'Noman', 'prenume' => 'Alice', 'sex' => 'f', 'varsta' => 22),            'e4' => array('nume' => 'Geangos', 'prenume' => 'Bogdan', 'sex' => 'm', 'varsta' => 23),            'e5' => array('nume' => 'Vasile', 'prenume' => 'Mihai', 'sex' => 'm', 'varsta' => 25)    );    $obj = convertToObject($clasa);    print_r($obj);?>

which outputs (note that there's no arrays - only stdClass's):

stdClass Object(    [e1] => stdClass Object        (            [nume] => Nitu            [prenume] => Andrei            [sex] => m            [varsta] => 23        )    [e2] => stdClass Object        (            [nume] => Nae            [prenume] => Ionel            [sex] => m            [varsta] => 27        )    [e3] => stdClass Object        (            [nume] => Noman            [prenume] => Alice            [sex] => f            [varsta] => 22        )    [e4] => stdClass Object        (            [nume] => Geangos            [prenume] => Bogdan            [sex] => m            [varsta] => 23        )    [e5] => stdClass Object        (            [nume] => Vasile            [prenume] => Mihai            [sex] => m            [varsta] => 25        ))

So you'd refer to it by $obj->e5->nume.

DEMO


If you want to recursively convert the entire array into an Object type (stdClass) then , below is the best method and it's not time-consuming or memory deficient especially when you want to do a recursive (multi-level) conversion compared to writing your own function.

$array_object = json_decode(json_encode($array));