Fonction print_r en PHP


Fonction print_r en PHP

Messagepar dommarion » 19 Avr 2024 21:09

Bonjour,
Nous disposons de la fonction var_dump, mais pas de la fonction print_r qui affiche les variables simples et tableaux ou objets.
Voir le lien pour le détail de la fonction en PHP: print_r
Code : Tout sélectionner
// Fonction de remplacement de print_r en PHP
function sdk_print_r($input, $return = false ) {
   global $indent,$return;
   if (!isset($indent)) {$indent = 0;}
   $response = "";

   if ($return == false) {
       if (is_array($input) || is_object($input)) {
          if (is_array($input)){ echo "Array\n" . str_repeat(" ", $indent) . "(\n";}
          if (is_object($input)){ echo "stdClass Object\n" . str_repeat(" ", $indent) . "(\n";}
       
          foreach ($input as $key => $value) {
               if (is_array($value) || is_object($value)) {
                   echo str_repeat(" ", $indent + 4) . "[".$key."] => ";
                   $indent .= 8;
                   sdk_print_r($value, $return);
                   $indent = $indent-8;
               } else {
                   echo str_repeat(" ", $indent + 4) .  "[".$key."] => $value\n";
               }
           }
           echo str_repeat(" ", $indent) . ")\n";
       } else {
           echo "$input\n";
       }
   }
   if ($return == true) {
      if (is_array($input) || is_object($input)) {
          if (is_array($input)){ $response.= "Array\n" . str_repeat(" ", $indent) . "(\n";}
          if (is_object($input)){ $response.= "stdClass Object\n" . str_repeat(" ", $indent) . "(\n";}
       
          foreach ($input as $key => $value) {
               if (is_array($value) || is_object($value)) {
                   $response.= str_repeat(" ", $indent + 4) . "[".$key."] => ";
                   $indent .= 8;
                   sdk_print_r($value, $return);
                   $indent = $indent-8;
               } else {
                   $response.= str_repeat(" ", $indent + 4) .  "[".$key."] => $value\n";
               }
           }
           $response.= str_repeat(" ", $indent) . ")\n";
       } else {
           $response.= "$input\n";
       }
    return $response;
   }
}

J'ai sollicité la teams pour inclure cette fonction dans la box. Malheureusement, pour des raisons de rétrocompatibilité avec la box eedomus (vs eedomus+) il n'est pas possible de mettre cela en fonction globale dans pour la box.
Il faut déclarer une fonction dans vos scripts pour avoir ce résultat, je vous propose cette fonction sous le nom de sdk_print_r() (le jour où la team la passera en global, alors il n'y aura qu'à supprimer la déclaration de votre fonction dans vos scripts :ugeek:).
Bonne soirée
dommarion
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 598
Inscription : 28 Déc 2020

Retour vers Entraide programmation plugins

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)