Accéder à des variables d'objet de tableau lors de l'implémentation RecursiveArrayIterator dans RecursiveIteratorIterator

StackOverflow https://stackoverflow.com/questions/4014035

  •  26-09-2019
  •  | 
  •  

Question

J'ai un grand ArrayObject que je suis en boucle sur l'utilisation de ce qui suit: -

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

}

Comment puis-je accéder à la clé spécifique dans le tableau? Je peux y accéder en écho touche $ et le val $ mais j'avoir des clés spécifiques que je souhaite accéder. Si je tente d'appeler $ key [ « »] Je reçois la première lettre du nom de la clé.

Modifier 1

Certaines données de l'échantillon (Il peut y avoir de nombreux sous-enfants différents aussi):

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'
            ),
          )),
Était-ce utile?

La solution

Par défaut, le RecursiveIteratorIterator ne liste les feuilles. Essayez

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

pour obtenir les éléments contenant aussi bien.

Autres conseils

En supposant $hierarchy est votre grand tableau, vous pouvez utiliser $hierarchy["foo"] pour accéder à la valeur associée à la touche foo. Ou comme ceci:

$my_key = "foo"
echo $hierarchy[$my_key]
// Same as
echo $hierarchy["foo"]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top