Avertissement PHP : impossible de convertir un tableau en chaîne
P粉101708623
2023-08-15 22:27:37
<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>
La définition de la fonction
implode
est très grossièrement équivalente au code suivant (ceci n'est qu'un exemple, non testé) :$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 :À 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']
votrematrice, il y a d'autres matrices. Cela pourrait se produire de plusieurs manières :
Peut être écrit directement. Par exemple, quelqu'un pourrait écrire$_REQUEST
$_REQUEST['example'] = ['a', 'b'];
$_REQUEST
可以直接写入。例如,有人可以写入$_REQUEST['example'] = ['a', 'b'];
reconnaîtra certaines notations/your-page.php?example[]=a&example[]=b
et['a', 'b']
./your-page.php?example[]=a&example[]=b
,$_REQUEST
将自动填充为['a', 'b']
Cela nous rappelle un rappel très important :des hypothèses sur le contenu de , car
$_REQUEST
la saisie est sous le contrôle de l'utilisateur, et celui-ci n'est peut-être pas votre ami.