Accéder à des variables d'objet de tableau lors de l'implémentation RecursiveArrayIterator dans RecursiveIteratorIterator
-
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'
),
)),
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"]