我正在遍历一组对象,其中一些对象以非均匀的方式嵌套。我正在执行以下操作:
foreach($response['devices'] as $key => $object) {
foreach($object as $key => $value) {
echo $key . " : " . "$value . "<br>";
}
}
工作原理...直到击中下一个嵌入式数组/对象,它会给我一个'Notice:数组,将C:\ xampp \ htdocs \ index.php转换为字符串65'错误
我对PHP比较陌生,到目前为止只需要处理统一的对象。此输出更加不可预测,无法以相同的方式进行量化。如何“遍历”数据,以便处理遇到的每个数组?
答案 0 :(得分:0)
您应该创建一个可恢复的函数,这意味着该函数会自行调用直到满足条件,然后它返回结果并通过先前调用的函数堆栈来确定最终结果。像这样
<?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);
?>
这会打印出这样的内容:
[
hello => 1
world => [
0 => 1
1 => 2
2 => 3
]
! => [
0 => hello
1 => world
]
5 => [
data => I'm an object data
]
]
我希望这会有所帮助吗?