在RecursiveIteratorIterator中实现RecursiveArrayIterator时访问数组对象变量

时间:2010-10-25 11:19:30

标签: php spl arrayiterator

我有一个大型的arrayObject,我正在使用以下代码循环: -

$rit = new RecursiveIteratorIterator(new RecursiveArrayIterator($hierarchy));
foreach($rit as $key=> $val) {

}

如何访问阵列中的特定键?我可以通过回显$ key和$ val来访问它们,但我有我希望访问的特定密钥。如果我尝试拨打$ key [''],我会在密钥名称上输入第一个字母。

编辑1

一些样本数据(也可能有许多不同的子孩子):

ArrayObject::__set_state(array(
   0 => 
  ArrayObject::__set_state(array(
     0 => 
    array (
      'id' => '8755',
      'company_id' => '1437',
      'name' => 'Name 1'
    ),
     1 => 
    ArrayObject::__set_state(array(
       0 => 
      ArrayObject::__set_state(array(
         0 => 
        array (
          'id' => '8763',
          'company_id' => '1437',
          'name' => 'Name 2'
        ),
         1 => 
        ArrayObject::__set_state(array(
           0 => 
          ArrayObject::__set_state(array(
             0 => 
            array (
              'id' => '9067',
              'company_id' => '1437',
              'name' => 'Name 3'
            ),
          )),
           1 => 
          ArrayObject::__set_state(array(
             0 => 
            array (
              'id' => '8765',
              'company_id' => '1437',
              'name' => 'Name 4'
            ),
          )),
           2 => 
          ArrayObject::__set_state(array(
             0 => 
            array (
              'id' => '9049',
              'company_id' => '1437',
              'name' => 'Name 5'
            ),
          )),
           3 => 
          ArrayObject::__set_state(array(
             0 => 
            array (
              'id' => '8769',
              'company_id' => '1437',
              'name' => 'Name 6'
            ),
          )),

2 个答案:

答案 0 :(得分:1)

默认情况下,RecursiveIteratorIterator仅列出叶子。试试

$rit = new RecursiveIteratorIterator(
           new RecursiveArrayIterator($hierarchy),
           RecursiveIteratorIterator::SELF_FIRST);

也可以获取包含元素。

答案 1 :(得分:0)

假设$hierarchy是您的大型数组,您可以使用$hierarchy["foo"]来访问与foo密钥关联的值。或者像这样:

$my_key = "foo"
echo $hierarchy[$my_key]
// Same as
echo $hierarchy["foo"]