Avertissement PHP : impossible de convertir un tableau en chaîne
P粉101708623
P粉101708623 2023-08-15 22:27:37
0
1
483
<p>J'ai ce code dans mon fichier : </p> <pre class="brush:php;toolbar:false;">if (is_array($_REQUEST)) $cepl=implode(' ', $_REQUEST);</pre> <p> Tous les quelques jours, je reçois l'avertissement suivant dans le journal php : Avertissement PHP : conversion d'un tableau en chaîne </p> dans /file.php, ligne 76 <p>La ligne 76 est : $cepl=implode(' ', $_REQUEST);</p> <p>Je n'arrive pas à comprendre la cause de cet avertissement ? ! </p>
P粉101708623
P粉101708623

répondre à tous(1)
P粉449281068

La définition de la fonction

implode est très grossièrement équivalente au code suivant (ceci n'est qu'un exemple, non testé) :

function not_really_implode($glue, $pieces) {
   $result = '';
   $first = true;
   foreach ( $pieces as $piece ) {
      if ( ! $first ) {
          $result .= $glue;
      }
      $pieceAsString = (string)$piece;
      $result .= $pieceAsString;
      $first = false;
   }
   return $result;
}
Le point clé est cette ligne de code : $pieceAsString = (string)$piece; - Afin de combiner les éléments du tableau,

chaque élément doit être converti en chaîne un par un. $pieceAsString = (string)$piece; - 为了组合数组的元素,implode Maintenant, réfléchissez-y si ressemblait à ceci :

$pieces = [
   'one',
   ['two-a', 'two-b'],
   'three',
];

À un moment donné de notre boucle, nous aurons $pieces et essaierons de le convertir en chaîne - oups !

La raison pour laquelle l'avertissement apparaît est qu'à l'intérieur de $piece = ['two-a', 'two-b']votre

matrice, il y a d'autres matrices. Cela pourrait se produire de plusieurs manières : $_REQUEST

Peut être écrit directement. Par exemple, quelqu'un pourrait écrire $_REQUEST['example'] = ['a', 'b'];
  1. PHP $_REQUEST可以直接写入。例如,有人可以写入$_REQUEST['example'] = ['a', 'b'];reconnaîtra certaines notations
  2. dans l'entrée pour représenter les tableaux. Par exemple, quelqu'un pourrait accéder à l'URL /your-page.php?example[]=a&example[]=b et
  3. serait automatiquement renseigné comme ['a', 'b'] . /your-page.php?example[]=a&example[]=b$_REQUEST将自动填充为['a', 'b']Cela nous rappelle un rappel très important :
  4. Ne faites jamais confiance aux entrées des utilisateurs !
Il est très dangereux de faire

des hypothèses sur le contenu de , car $_REQUESTla saisie est sous le contrôle de l'utilisateur, et celui-ci n'est peut-être pas votre ami.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal