Saya memiliki file PHP yang mencoba menggemakan $_POST
dan saya mendapatkan kesalahan, berikut kodenya:
echo "<html>";
echo "<body>";
for($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="Save The Table" name="G"></input>'
Berikut adalah kode untuk menggemakan POST.
if(!empty($_POST['G'])){
echo $_POST['C'];
}
Tetapi ketika kode berjalan saya mendapatkan kesalahan seperti:
Notice: Array to string conversion in
C:\xampp\htdocs\PHIS\FinalSubmissionOfTheFormPHP.php on line 8
Apa arti kesalahan ini dan bagaimana cara memperbaikinya?
$Texting[i]
salah ketik? Bukankah seharusnya begitu$Texting[$i]
?var_dump($Texting)
.Jawaban:
Ketika Anda memiliki banyak input HTML bernama
C[]
apa yang Anda dapatkan dalam array POST di sisi lain adalah array dari nilai-nilai ini$_POST['C']
. Jadi ketika Anda melakukannyaecho
, Anda mencoba untuk mencetak sebuah array, jadi yang dilakukannya hanyalah mencetakArray
dan pemberitahuan.Untuk mencetak sebuah array dengan benar, Anda dapat mengulanginya dan
echo
setiap elemen, atau Anda dapat menggunakanprint_r
.Atau, jika Anda tidak tahu apakah itu array atau string atau apa pun, Anda dapat menggunakan
var_dump($var)
yang akan memberi tahu Anda jenisnya dan apa isinya. Gunakan itu hanya untuk tujuan debugging.sumber
Apa arti Pemberitahuan PHP dan bagaimana mereproduksinya:
Jika Anda mengirim array PHP menjadi fungsi yang mengharapkan string seperti:
echo
atauprint
, maka penerjemah PHP akan mengubah array Anda menjadi string literalArray
, lemparkan Pemberitahuan ini dan lanjutkan. Sebagai contoh:Dalam kasus ini, fungsi tersebut
print
membuang string literal:Array
ke stdout dan kemudian mencatat Pemberitahuan ke stderr dan melanjutkan.Contoh lain dalam skrip PHP:
Anda memiliki 2 opsi, mentransmisikan array PHP Anda ke String menggunakan konverter array ke string atau menekan Pemberitahuan PHP.
Koreksi 1: Gunakan fungsi php bawaan print_r atau var_dump:
http://php.net/manual/en/function.print-r.php atau http://php.net/manual/en/function.var-dump.php
Cetakan:
Koreksi 2: Gunakan json_encode untuk menciutkan array ke string json:
Koreksi 3: Menggabungkan semua sel dalam array:
Koreksi 4: tutup Pemberitahuan:
sumber
Anda menggunakan
<input name='C[]'
di HTML Anda. Ini membuat sebuah array di PHP saat formulir dikirim.Anda menggunakan
echo $_POST['C'];
untuk menggemakan larik itu - ini tidak akan berhasil, melainkan memancarkan pemberitahuan itu dan kata "Array".Bergantung pada apa yang Anda lakukan dengan kode lainnya, Anda mungkin harus menggunakan
echo $_POST['C'][0];
sumber
Array to string conversion
dalam versi terbaru dari php 7.x adalah error, bukan pemberitahuan, dan mencegah eksekusi kode lebih lanjut.Menggunakan
print
,echo
pada array bukan lagi merupakan pilihan.Menekan kesalahan dan pemberitahuan bukanlah praktik yang baik, terutama saat berada di lingkungan pengembangan dan masih men-debug kode.
Gunakan
var_dump
,,print_r
ulangi melalui nilai masukan menggunakanforeach
ataufor
untuk mengeluarkan data masukan untuk nama yang dideklarasikan sebagai larik masukan ('name[]
')Praktik paling umum untuk menangkap kesalahan adalah menggunakan
try/catch
blok, yang membantu kami mencegah gangguan eksekusi kode yang mungkin menyebabkan kemungkinan kesalahan yang terbungkus dalamtry
blok.sumber
jika Anda ingin menangkap hasil dalam variabel
sumber