/**
* Konvertierung zwischen PHP-Objekten und Arrays
*
* @author flyer0126
* @since 03.05.2012
**/
// 1. Verwenden Sie (array) und (object), um einfach
$objTemp = zu verarbeiten (objTemp->b = 2;
$objTemp->c = 3;
$arrTemp = (array)$objTemp;
print_r($objTemp);
print_r($arrTemp);
/**
stdClass Object
(
[a] => 1
[b] => 2
[c] => 3
)
Array
(
[a] => 1
[b] => 2
[c] => 3
)
**/
// PS: Einfach (Array) und (Objekt) können nur Daten einer einzelnen Ebene verarbeiten , können Sie nichts gegen mehrschichtige Array- und Objektkonvertierungen tun.
* Konvertieren Sie das Objekt in ein mehrdimensionales Array
*
** /
function objectToArray($d) {
if (is_object($d)) {
// Ruft die Eigenschaften des angegebenen Objekts ab
// mit der Funktion get_object_vars
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* In Objekt konvertiertes Array zurückgeben
* Verwendung von __FUNCTION__ (magische Konstante)
* für rekursiven Aufruf
* /
return array_map(__FUNCTION__, $d);
}
else {
// Return array
return $ d ;
}
}
/**
* Mehrdimensionales Array in Objekt konvertieren
*
**/
function arrayToObject($d) {
if (is_array($d)) {
/*
* In ein Objekt konvertiertes Array zurückgeben
* Mit __FUNCTION__ (magische Konstante)
* für rekursiven Aufruf
*/
return (object) array_map(__FUNCTION__, $d);
}
else {
// Objekt zurückgeben
return $d;
}
}
// Verwendung :
$init = new stdClass;
$init->foo = "Test data";
$init->bar = new stdClass;
$init->bar->baaz = "Testing";
$init->bar->fooz = new stdClass;
$init->bar - >fooz->baz = "Erneut testen";
$init->foox = "Nur testen";
// Konvertieren Array zum Objekt und dann Objekt zurück zum Array
$array = objectToArray($init);
$object = arrayToObject($array);
// Objekte und Array drucken
print_r($init);
print_r($array);
print_r($object);
/**
stdClass Object
(
[foo] => Testdaten
[bar] => stdClass Object
(
[baaz] => Testing
[fooz] => stdClass Object
[baz] => Erneut testen
)
)
[foox] => Einfach testen
)
Array
(
[foo] => Testdaten
[bar] => Array
(
[baaz] => Testen
[fooz] => Array
(
[baz] => Erneut testen
)
[foox ] => Einfach testen
)
stdClass Object
(
[foo] => Test data
[bar ] => stdClass Object
(
[baz] => Noch einmal testen
)
[foox] => Einfach testen
)
**/