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
.
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));