Um ein PHP Array in ein Object (stdClass) zu konvertieren, gibt es verschiedene Varianten, die zum Ziel führen. Das erste Beispiel zeigt eine PHP Funktion convertArrayToObject(), die beim Aufruf ein PHP Array rekursiv, in ein Objekt konvertiert. D.h. es werden hier auch alle Arrays innerhalb eines Arrays in ein stdClass Object überführt. Die kleine Funktion "array_debug()", dient hier lediglich zur besseren Visualisierung der Ausgabe.
<?php
// debug array input - visual helper function
function array_debug($input){
echo '<pre>';
print_r($input);
echo '</pre>';
}
// recursive convert array to object function
function convertArrayToObject($array) {
$object = new stdClass();
foreach ($array as $key => $value) {
if (is_array($value)) {
$value = convertArrayToObject($value);
}
$object->$key = $value;
}
return $object;
}
// array example
$array_personen = array(
'person_1' => array('vorname' => 'Peer', 'nachname' => 'Stamml', 'alter' => 23),
'person_2' => array('vorname' => array('Hans', 'Peter'), 'nachname' => 'Bossel', 'alter' => 62),
'person_3' => array('vorname' => 'Nina', 'nachname' => 'Klokke', 'alter' => 37),
'person_4' => array('vorname' => 'Anne', 'nachname' => 'Brusta', 'alter' => 34),
'person_5' => array('vorname' => 'Suse', 'nachname' => 'Mohein', 'alter' => 28,
array('kinder' => 2)
)
);
// output the converted object array with debug function
array_debug(
convertArrayToObject($array_personen)
);
?>
Die Konvertierung eins PHP Arrays, in ein stdClass Object, läßt sich auch ganz einfach mit der Notation object() umsetzten.
<?php
// automatically converted array to stdClass with (object)
$array_person = array(
'alter' => 62, 'nachname' => 'Bossel', 'vorname' => 'Hans'
);
// turn array into PHP stdClass Object
$show_person = (object) $array_person;
// output the converted object array
echo $show_person->nachname . ', ';
echo $show_person->vorname . ' (Alter: ';
echo $show_person->{'alter'} . ')';
?>
Um auf das stdClass Object zugreifen zu können, das in der $show_person Variable gespeichert ist, gibt es noch weitere Schreibweisen, wie z.B. $obj->.