Exploitation d'un array imbriqué
Bonjour,
J'ai deux fonctions qui me permettent de récupérer les commentaires d'un article ainsi que les commentaires qui commentent le commentaire.
Ainsi, par exemple, je me retrouve avec trois commentaires dont un qui commente un commentaire.
je me retrouve avec un array contenant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| Array
(
[0] => Array
(
[id_commentaire] => 36
[u_id] => 18
[commentaire_titre] => Mon message
[commentaire_contenu] =>
super trek !!!
ça fait envie tout de même, pour vous rassurer nous aussi dans les pyrénées nous manquons énormément de neige....cette année ne semble pas être une bonne saison hivernale.
Mais heureusement les paysages sont toujours la pour alimenter notre regard Rigolant
[commentaire_timestamp] => 1298326740
[children] =>
)
[1] => Array
(
[id_commentaire] => 37
[u_id] => 2
[commentaire_titre] => Un super Vercors
[commentaire_contenu] =>
Salut,
Super joli le Vercors. Nous pensons y retourner pendant l'été car le calcaire y est superbe et les vues excellentes.
Nous conseillons fortement la traversée de la réserve naturelle !
@+Sourire et merci pour tes commentaires.
[commentaire_timestamp] => 1298359980
[children] => Array
(
[0] => Array
(
[id_commentaire] => 36
[u_id] => 18
[commentaire_titre] => Mon message
[commentaire_contenu] =>
super trek !!!
ça fait envie tout de même, pour vous rassurer nous aussi dans les pyrénées nous manquons énormément de neige....cette année ne semble pas être une bonne saison hivernale.
Mais heureusement les paysages sont toujours la pour alimenter notre regard Rigolant
[commentaire_timestamp] => 1298326740
[children] =>
)
)
)
) |
Pour exploiter ces informations, j'ai essayé un foreach imbriqué :
Code:
1 2 3 4 5 6 7 8 9
| foreach($test as $key => $value )
{
echo $key . ': <br />';
foreach( $value as $valeur )
echo ' ' . $valeur . '<br />';
echo '<br />';
} |
Qui me retourne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| 0:
36
18
Mon message
super trek !!!
ça fait envie tout de même, pour vous rassurer nous aussi dans les pyrénées nous manquons énormément de neige....cette année ne semble pas être une bonne saison hivernale.
Mais heureusement les paysages sont toujours la pour alimenter notre regard Rigolant
1298326740
1:
37
2
Un super Vercors
Salut,
Super joli le Vercors. Nous pensons y retourner pendant l'été car le calcaire y est superbe et les vues excellentes.
Nous conseillons fortement la traversée de la réserve naturelle !
@+Sourire et merci pour tes commentaires.
1298359980
Array |
On remarque alors que seul les commentaires "basiques" sont retournés.
Comment puis-je faire pour récupérer les commentaires commenté ?
Merci !:ccool:
fonction au top : array_walk_recursive
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <?php
Class Commentaire_filter{
static function test_print($item, $key)
{
echo "$key : $item\n<br/>";
}
}
$Commentaire =
Array(
0=> Array(
"id_commentaire" => 36,
"u_id" => 2,
"commentaire_titre" =>' Mon message',
"commentaire_contenu" => 'Super trek !!! ',
"commentaire_timestamp" => 1298326740,
"children" => ""
),
1=> Array(
"id_commentaire" => 37,
"u_id" => 14,
"commentaire_titre" =>'Un super Vercors',
"commentaire_contenu" => 'Super joli le Vercors.',
"commentaire_timestamp" => 1298359980,
"children" => Array
(
0 => Array
(
"id_commentaire" => 38,
"u_id" => 18,
"commentaire_titre"=> "Mon message" ,
"commentaire_contenu" => "ça fait envie tout de même,",
"commentaire_timestamp" => 1298326740,
"children" => ""
)
)
)
);
array_walk_recursive($Commentaire, 'Commentaire_filter::test_print');
?> |
Avec ca tu peu par par exemple tester si la variable $children et vide
Code:
if ( $key==$children && $item ==""){...}