PHP对象迭代-嵌套结构
我正在迭代一组对象,其中一些对象以非统一的方式嵌套。我正在做以下工作:PHP对象迭代-嵌套结构,php,Php,我正在迭代一组对象,其中一些对象以非统一的方式嵌套。我正在做以下工作: foreach($response['devices'] as $key => $object) { foreach($object as $key => $value) { echo $key . " : " . "$value . "<br>"; } } foreach($response['devices']as$key=>$object){ foreach($
foreach($response['devices'] as $key => $object) {
foreach($object as $key => $value) {
echo $key . " : " . "$value . "<br>";
}
}
foreach($response['devices']as$key=>$object){
foreach($key=>$value的对象){
回显$key.:“$value.”
”;
}
}
这是有效的…直到它到达下一个嵌入式数组/对象,在那里它给了我一个“注意:在C:\xampp\htdocs\index.php中的数组到字符串的转换,在第65行”错误
我对PHP比较陌生,到目前为止只需要处理统一对象。这种输出更不可预测,无法以同样的方式进行量化。我如何“遍历”数据,以便它处理遇到的每个数组?您应该创建一个递归函数,这意味着,函数本身调用,直到满足条件为止然后它返回结果并通过之前调用的函数堆栈来确定最终结果
<?php
// associative array containing array, string and object
$array = ['hello' => 1, 'world' => [1,2,3], '!' => ['hello', 'world'], 5 => new Helloworld()];
// class helloworld
class Helloworld {
public $data;
function __construct() {
$this->data = "I'm an object data";
}
}
//function to read all type of data
function recursive($obj) {
if(is_array($obj) or is_object($obj)) {
echo ' [ '.PHP_EOL;
foreach($obj as $key => $value) {
echo $key.' => ';
recursive($value);
}
echo ' ] '.PHP_EOL;
} else {
echo $obj.PHP_EOL;
}
}
// call recursive
recursive($array);
?>
我希望这有帮助?在echo之前,您应该先检查$value是否是数组或字符串:)使用递归函数,如果下一项是对象等,则该函数会调用自身。如果希望数据以结构化格式显示,则可以简单地使用
echo json_encode($object)
虽然你的代码可能很好,你也解释过了,但这只是重新发明轮子。只需使用print\u r()
,var\u dump()
或var\u export()
。哦,是的,当然我只是在解释,最好先理解,然后使用已经存在的;)
[
hello => 1
world => [
0 => 1
1 => 2
2 => 3
]
! => [
0 => hello
1 => world
]
5 => [
data => I'm an object data
]
]