我已经花了好几个小时试图解决这个问题,我知道我错过了一些明显的东西。这就是问题所在:
我有一个数组,它的一些元素是对象,其他是数组,其他是其他类型。我需要的是:
以下是问题:每次将对象元素转换为数组时,必须将对象的类名添加为通过转换对象生成的数组的第一个元素。
这是一个简化的例子:
阵列:
Array
(
[0] => PhpParser\Node\Expr\Assign Object
(
[var] => PhpParser\Node\Expr\Variable Object
(
[name] => bar
)
[expr] => PhpParser\Node\Scalar\LNumber Object
(
[value] => 22
)
)
)
我需要这样的功能:
//$arr is the array previously posted
$arr = cool_object_to_array($arr);
var_dump($arr );
输出
Array
(
[0] => Array
(
[0] => PhpParser\Node\Expr\Assign
[var] => Array
(
[0] => PhpParser\Node\Expr\Variable
[name] => bar
)
[expr] =>Array
(
[0] => PhpParser\Node\Scalar\LNumber
[value] => 22
)
)
)
嵌套级别未知。它可以是嵌套在嵌套在其他对象或数组上的对象的许多数组等。这个例子非常简单。我需要一个解决方案来处理这个问题。
提前感谢您的所有答案!
答案 0 :(得分:0)
这应该这样做:
function cool_object_to_array($array) {
foreach ($array as $key => &$value) {
if (is_object($value)) {
$type = get_class($value);
$value = (array) $value;
array_unshift($value, $type);
}
if (is_array($value)) {
$value = cool_object_to_array($value);
}
}
return $array;
}