Rumah  >  Soal Jawab  >  teks badan

Amaran PHP: tidak boleh menukar tatasusunan kepada rentetan

<p>Saya mempunyai kod ini dalam fail saya: </p> <pre class="brush:php;toolbar:false;">if (is_array($_REQUEST)) $cepl=implode(' ', $_REQUEST);</pre> <p>Setiap beberapa hari saya mendapat amaran berikut dalam log php: Amaran PHP: Menukar tatasusunan kepada rentetan</p> dalam /file.php, baris 76 <p>Barisan 76 ialah: $cepl=implode(' ', $_REQUEST);</p> <p>Saya tidak dapat mengetahui apa yang menyebabkan amaran ini? ! </p>
P粉101708623P粉101708623402 hari yang lalu384

membalas semua(1)saya akan balas

  • P粉449281068

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

    Takrifan fungsi

    implode adalah sangat kasar bersamaan dengan kod berikut (ini hanyalah contoh, tidak diuji):

    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;
    }

    Intinya ialah baris kod ini: $pieceAsString = (string)$piece; - Untuk menggabungkan elemen tatasusunan,

    setiap elemen mesti ditukar kepada rentetan satu demi satu. $pieceAsString = (string)$piece; - 为了组合数组的元素,implode Sekarang fikirkan jika kelihatan seperti ini:

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

    Pada satu ketika dalam gelung kami, kami akan mempunyai $pieces dan cuba tukarkannya kepada rentetan - oops!

    Jadi sebab amaran muncul adalah kerana di dalam $piece = ['two-a', 'two-b']array

    anda, terdapat tatasusunan lain. Beberapa cara ini boleh berlaku: $_REQUEST

    Boleh tulis terus. Sebagai contoh, seseorang boleh menulis $_REQUEST['example'] = ['a', 'b'];
    1. PHP akan $_REQUEST可以直接写入。例如,有人可以写入$_REQUEST['example'] = ['a', 'b'];mengenal notasi tertentu
    2. dalam input untuk mewakili tatasusunan. Sebagai contoh, seseorang boleh mengakses URL /your-page.php?example[]=a&example[]=b dan
    3. akan diisi secara automatik sebagai ['a', 'b'] . /your-page.php?example[]=a&example[]=b$_REQUEST将自动填充为['a', 'b']Ini membawa peringatan yang sangat penting:
    4. Jangan sekali-kali mempercayai input pengguna!
    Amat berbahaya untuk membuat

    sebarang andaian tentang kandungan dalam , kerana $_REQUESTinput adalah di bawah kawalan pengguna, dan pengguna mungkin bukan rakan anda.

    balas
    0
  • Batalbalas