PHP对象迭代-嵌套结构

时间:2019-03-11 13:58:16

标签: php

我正在遍历一组对象,其中一些对象以非均匀的方式嵌套。我正在执行以下操作:

foreach($response['devices'] as $key => $object) {
    foreach($object as $key => $value) {
        echo $key . " : " . "$value . "<br>";
    }
}

工作原理...直到击中下一个嵌入式数组/对象,它会给我一个'Notice:数组,将C:\ xampp \ htdocs \ index.php转换为字符串65'错误

我对PHP比较陌生,到目前为止只需要处理统一的对象。此输出更加不可预测,无法以相同的方式进行量化。如何“遍历”数据,以便处理遇到的每个数组?

1 个答案:

答案 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
 ] 
 ] 

我希望这会有所帮助吗?