cari

Rumah  >  Soal Jawab  >  teks badan

Menyelesaikan Ralat PHP: Perkara yang Perlu Dipertimbangkan Semasa Menukar Tatasusunan kepada Rentetan

<p>Saya mempunyai fail PHP dan saya cuba mengeluarkan <kod>$_POST</kod>, tetapi saya mendapat ralat, berikut ialah kodnya: </p> <pre class="brush:php;toolbar:false;">echo "<html>"; echo "<badan>"; untuk($i=0; $i<5;$i++){ echo "<input name='C[]' value='$Texting[$i]' " . "style='background-color:#D0A9F5;'></input>"; } echo "</body>"; echo "</html>"; echo '<input type="submit" value="Simpan Jadual" name="G"></input>'</pre> <p>Berikut ialah kod untuk mengeluarkan POST. </p> <pre class="brush:php;toolbar:false;">if(!kosong($_POST['G'])){ echo $_POST['C']; }</pre> <p>Tetapi apabila kod dijalankan, saya mendapat ralat seperti ini: </p> <pre class="brush:php;toolbar:false;">Notis: Tatasusunan kepada penukaran rentetan dalam C:xampphtdocsPHISFinalSubmissionOfTheFormPHP.php pada baris 8</pre> <p>Apakah yang dimaksudkan dengan ralat ini dan bagaimana saya boleh membetulkannya? </p>
P粉538462187P粉538462187538 hari yang lalu642

membalas semua(2)saya akan balas

  • P粉986860950

    P粉9868609502023-08-22 09:46:05

    Apakah maksud Notis PHP dan cara mengeluarkannya semula:

    Jika anda menghantar tatasusunan PHP ke fungsi yang mengharapkan rentetan, seperti echoprint,那么PHP解释器会将你的数组转换为字面字符串Array, buang Notis ini dan teruskan pelaksanaan. Contohnya:

    php> print(array(1,2,3))
    
    PHP Notice:  Array to string conversion in 
    /usr/local/lib/python2.7/dist-packages/phpsh/phpsh.php(591) :
    eval()'d code on line 1
    Array

    Dalam kes ini, fungsi print将字面字符串Array output ke stdout, kemudian log Notis ke stderr dan meneruskan pelaksanaan.

    Satu lagi contoh skrip PHP:

    <?php
        $stuff = array(1,2,3);
        print $stuff;  //PHP Notice:  Array to string conversion in yourfile on line 3
    ?>

    Kaedah pembetulan 1: Gunakan gelung foreach untuk mengakses elemen tatasusunan

    http://php.net/foreach

    $stuff = array(1,2,3);
    foreach ($stuff as $value) {
        echo $value, "\n";
    }

    Keluaran:

    1
    2
    3

    Atau mengandungi nama kunci tatasusunan:

    $stuff = array('name' => 'Joe', 'email' => 'joe@example.com');
    foreach ($stuff as $key => $value) {
        echo "$key: $value\n";
    }

    Keluaran:

    name: Joe
    email: joe@example.com

    Perhatikan bahawa elemen tatasusunan juga boleh menjadi tatasusunan. Dalam kes ini, ia boleh digunakan semula foreach或使用数组语法访问内部数组元素,例如$row['name']

    Pembetulan 2: Gabungkan semua sel dalam tatasusunan bersama-sama:

    Jika ia hanya tatasusunan satu dimensi biasa, anda boleh menggunakan pembatas untuk menggabungkan semua sel menjadi rentetan:

    <?php
        $stuff = array(1,2,3);
        print implode(", ", $stuff);    //输出 1, 2, 3
        print join(',', $stuff);        //输出 1,2,3

    Kaedah pembetulan 3: Tukar tatasusunan struktur kompleks kepada rentetan:

    Jika tatasusunan anda mempunyai struktur yang kompleks tetapi masih perlu menukarnya kepada rentetan, anda boleh menggunakan http://php.net/json_encode

    $stuff = array('name' => 'Joe', 'email' => 'joe@example.com');
    print json_encode($stuff);

    Keluaran:

    {"name":"Joe","email":"joe@example.com"}

    Lihat struktur tatasusunan dengan cepat: gunakan fungsi php terbina dalam

    Jika anda hanya ingin memeriksa kandungan tatasusunan untuk tujuan penyahpepijatan, anda boleh menggunakan salah satu fungsi berikut. Perlu diingat bahawa var_dump ialah yang paling bertele-tele daripada kesemuanya dan biasanya lebih disukai untuk tujuan ini

    Contoh:

    $stuff = array(1,2,3);
    print_r($stuff);
    $stuff = array(3,4,5);
    var_dump($stuff);

    Keluaran:

    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )
    array(3) {
      [0]=>
      int(3)
      [1]=>
      int(4)
      [2]=>
      int(5)
    }

    balas
    0
  • P粉739886290

    P粉7398862902023-08-22 00:07:45

    Apabila anda mempunyai banyak nama C[]的HTML输入时,你在POST数组的另一端得到的是这些值的数组$_POST['C']。所以当你echo它时,你正在尝试打印一个数组,所以它只会打印Array dan petunjuk.

    Untuk mencetak tatasusunan dengan betul, anda boleh menggelungkannya dan echo每个元素,或者你可以使用print_r.

    Selain itu, jika anda tidak tahu sama ada ia adalah tatasusunan atau rentetan atau apa sahaja, anda boleh menggunakan var_dump($var) dan ia akan memberitahu anda jenisnya dan kandungannya. Untuk tujuan penyahpepijatan sahaja.

    balas
    0
  • Batalbalas