PHP - 递归数组到对象?
2022-08-30 10:33:37
有没有办法在PHP中将多维转换为对象?array
stdClass
强制转换为似乎不递归工作。 产生我正在寻找的结果,但必须有更好的方法......(object)
json_decode(json_encode($array))
有没有办法在PHP中将多维转换为对象?array
stdClass
强制转换为似乎不递归工作。 产生我正在寻找的结果,但必须有更好的方法......(object)
json_decode(json_encode($array))
据我所知,没有预构建的解决方案,因此您可以自行滚动:
function array_to_object($array) {
$obj = new stdClass();
foreach ($array as $k => $v) {
if (strlen($k)) {
if (is_array($v)) {
$obj->{$k} = array_to_object($v); //RECURSION
} else {
$obj->{$k} = $v;
}
}
}
return $obj;
}
我知道这个答案来得很晚,但我会为任何正在寻找解决方案的人发布它。
而不是所有这些循环等,你可以使用PHP的原生json_*函数。我有几个方便的函数,我经常使用
/**
* Convert an array into a stdClass()
*
* @param array $array The array we want to convert
*
* @return object
*/
function arrayToObject($array)
{
// First we convert the array to a json string
$json = json_encode($array);
// The we convert the json string to a stdClass()
$object = json_decode($json);
return $object;
}
/**
* Convert a object to an array
*
* @param object $object The object we want to convert
*
* @return array
*/
function objectToArray($object)
{
// First we convert the object into a json string
$json = json_encode($object);
// Then we convert the json string to an array
$array = json_decode($json, true);
return $array;
}
希望这有帮助