Json_decode (json_encode ($ object) can be used to convert an object to an array at a time. However, problems may occur when the object encounters non-UTF-8 encoded non-ascii characters, such as gbk Chinese characters, besides, the performance of json_encode and decode is also worth pondering. the use of multi-layer arrays and object conversion is very simple, which facilitates the processing of multi-layer arrays and object conversion in WebService.
Simple (array) and (object) can only process single-layer data, but there is nothing to do with multi-layer array and object conversion.
Json_decode (json_encode ($ object) can be used to convert an object to an array at a time. However, problems may occur when the object encounters non-UTF-8 encoded non-ascii characters, such as gbk Chinese characters, besides, the performance of json_encode and decode is also worth considering.
The code below:
The code is as follows:
Function objectToArray ($ d ){
If (is_object ($ d )){
// Gets the properties of the given object
// With get_object_vars function
$ D = get_object_vars ($ d );
}
If (is_array ($ d )){
/*
* Return array converted to object
* Using _ FUNCTION _ (Magic constant)
* For recursive call
*/
Return array_map (_ FUNCTION __, $ d );
}
Else {
// Return array
Return $ d;
}
}
Function arrayToObject ($ d ){
If (is_array ($ d )){
/*
* Return array converted to object
* Using _ FUNCTION _ (Magic constant)
* For recursive call
*/
Return (object) array_map (_ FUNCTION __, $ d );
}
Else {
// Return object
Return $ d;
}
}
// Useage:
// Create new stdClass Object
$ Init = new stdClass;
// Add some test data
$ Init-> foo = "Test data ";
$ Init-> bar = new stdClass;
$ Init-> bar-> baaz = "Testing ";
$ Init-> bar-> fooz = new stdClass;
$ Init-> bar-> fooz-> baz = "Testing again ";
$ Init-> foox = "Just test ";
// Convert array to object and then object back to array
$ Array = objectToArray ($ init );
$ Object = arrayToObject ($ array );
// Print objects and array
Print_r ($ init );
Echo "\ n ";
Print_r ($ array );
Echo "\ n ";
Print_r ($ object );
?>