plus rien après une boucle foreach

plus rien après une boucle foreach - PHP - Programmation

Marsh Posté le 24-03-2020 à 11:44:55    

bonjour ,  
je dois surement faire quelquechose de pas bien , mais je n'excute aucun code après une boucle foreach  
mon code

Code :
  1. $temp = array ();
  2. $temp = $result_data[0]->customer->usage_points[0]->usage_point->usage_point_addresses;
  3. echo '<pre>';
  4. print_r($temp);
  5. echo '</pre>';
  6. foreach ($temp as $elements) {echo "<br>test $elements";}
  7. echo "<br> message après boucle ";


 
le retour est :  

Code :
  1. stdClass Object
  2. (
  3.     [street] => 4 rue Voltaire
  4.     [locality] =>
  5.     [postal_code] => 11000
  6.     [insee_code] => 11069
  7.     [city] => Carcassonne
  8.     [country] => France
  9.     [geo_points] => stdClass Object
  10.         (
  11.             [latitude] =>
  12.             [longitude] =>
  13.             [altitude] =>
  14.         )
  15. )
  16. test 4 rue Voltaire
  17. test
  18. test 11000
  19. test 11069
  20. test Carcassonne
  21. test France


 
mais jamais "message après boucle" et le code que j'ai après ne s’exécute pas  
si je mets la boucle foreach en commentaire tout est OK affichage de "message après boucle" et exécution de la suite  
 
 
ya t il un truc que je loupe ?  
 
merci de votre aide


Message édité par jluc2808 le 24-03-2020 à 18:04:15
Reply

Marsh Posté le 24-03-2020 à 11:44:55   

Reply

Marsh Posté le 24-03-2020 à 12:06:09    

ton code plante sur la ligne 6 quand tu echo un element qui est un objet (la clé geo_points).
Tu peux faire :

Code :
  1. if (is_string($elements)) {echo "<br>test $elements";}


Ou une conversion en string, par exemple avec var_export($elements, TRUE)


---------------
D3
Reply

Marsh Posté le 24-03-2020 à 12:16:09    

génial , c'est bien cela  
question complémentaire , comment je fais pour ne prendre que  les parties hors géo_points de la boucle de ma variable $temp  

Reply

Marsh Posté le 24-03-2020 à 13:38:11    

Un truc du genre ?

Code :
  1. foreach ($temp as $key => $value) {
  2. if ($key != 'geo_points') {
  3.  echo '<br>test '.$value;
  4. }
  5. }


Sinon tu avais le is_string() qui pourrait fonctionner "tout le temps" au cas ou ton objet $result_data[0]->customer->usage_points[0]->usage_point->usage_point_addresses est susceptible de changer...


---------------
D3
Reply

Marsh Posté le 24-03-2020 à 18:03:14    

oui la structure ne change pas et les éléments dedans sont invariant (pas les valeurs bien sur) donc ce que tu dis c'est que je peux laisser is_string() tout le temps, c'est plus simple , effectivement .  
 
merci bien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed