Maison  >  Questions et réponses  >  le corps du texte

Avertissement PHP : impossible de convertir un tableau en chaîne

<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粉101708623P粉101708623402 Il y a quelques jours382

répondre à tous(1)je répondrai

  • P粉449281068

    P粉4492810682023-08-16 17:52:28

    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.

    répondre
    0
  • Annulerrépondre