Доступ к переменным объекта массива при реализации RecursiveArrayIterator в RecursiveIteratorIterator - PullRequest
0 голосов
/ 25 октября 2010

У меня есть большой объект 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 ]

1 голос
/ 25 октября 2010

По умолчанию RecursiveIteratorIterator будет только перечислять листья. Попробуйте

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

чтобы получить содержащие элементы.

0 голосов
/ 25 октября 2010

Предполагая, что $hierarchy - ваш большой массив, вы можете использовать $hierarchy["foo"] для доступа к значению, связанному с клавишей foo.Или вот так:

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