Saya mencoba untuk memeriksa apakah $ _POST ada dan jika ada, cetak di dalam string lain, jika tidak, jangan cetak sama sekali.
sesuatu seperti ini:
$fromPerson = '+from%3A'.$_POST['fromPerson'];
function fromPerson() {
if !($_POST['fromPerson']) {
print ''
} else {
print $fromPerson
};
}
$newString = fromPerson();
Bantuan apa pun akan sangat bagus!
empty()
adalah tidak benar untuk pilihan # 1, karena dalam php, string'0'
setara denganfalse
- danempty()
kembalitrue
untuk semua nilai setara dengan palsu . Jadi dengan menggunakanempty
, kode akan melewatkan pencetakan jika nilainya adalah'0'
. Jika Anda ingin mengecualikan string kosong, lihat jawaban Augustus.Semua orang mengatakan untuk menggunakan isset () - yang mungkin akan berhasil untuk Anda.
Namun, penting bagi Anda untuk memahami perbedaannya
$_POST['x'] = NULL;
dan$_POST['x'] = '';
isset($_POST['x'])
akan kembalifalse
ke contoh pertama, tetapi akan kembalitrue
pada contoh kedua meskipun jika Anda mencoba mencetak salah satunya, keduanya akan mengembalikan nilai kosong.Jika Anda
$_POST
berasal dari kolom / formulir yang dimasukkan pengguna dan dibiarkan kosong, SAYA PERCAYA (meskipun saya tidak 100% yakin tentang ini) bahwa nilainya adalah "" tetapi BUKAN NULL.Sekalipun asumsi itu salah (seseorang tolong koreksi saya jika saya salah!), Hal di atas masih perlu diketahui untuk digunakan di masa mendatang.
sumber
empty()
adalah tidak benar di sini, karena di php, string'0'
setara denganfalse
- danempty()
kembalitrue
untuk semua nilai setara dengan palsu . Jadi dengan menggunakanempty
, kode akan melewatkan pencetakan jika nilainya adalah'0'
.Terkejut itu belum disebutkan
sumber
isset($_POST['fromPerson']
adalahtrue
, meskipunif($_SERVER['REQUEST_METHOD'] == 'POST'
adalahfalse
. Kecuali jika ada situasi seperti itu, yang dibutuhkan hanyalahisset...
bagian.fromPerson
mungkin tidak ada, tetapi POST mungkin masih ada. Pertanyaannya adalah, "Jika $ _POST ada." dan hanya sebagai contoh, $ _POST ['fromPerson'] digunakan. Dalam beberapa situasi, seperti yang dijelaskan @goat di sini , meskipunfromPerson
adalah nama Kirim, nama itu mungkin tidak ada di POST.sumber
Cara yang tepat untuk memeriksa apakah kunci array ada adalah dengan fungsi
array_key_exists()
Perbedaannya adalah ketika Anda memilikinya
$_POST['variable'] = null
berarti kunci itu ada dan telah dikirim tetapi nilainya nullOpsi lainnya adalah
isset()
yang akan memeriksa apakah kunci array ada dan jika sudah disetelOpsi terakhir adalah menggunakan
empty()
yang akan memeriksa apakah kunci array ada jika disetel dan jika nilai tidak dianggap kosong.Contoh:
Mengenai pertanyaan Anda
Cara yang tepat untuk memeriksa apakah nilai dikirim adalah dengan menggunakan array_key_exists () dengan metode pemeriksaan permintaan
Tetapi ada beberapa kasus yang bergantung pada logika Anda di mana
isset()
danempty()
bisa menjadi baik juga.sumber
empty
. Sebagai per komentar Shi pada jawaban Augustus Francis ,empty()
adalah tidak benar sebagai alternatif pilihan, karena di php, string'0'
setara denganfalse
- danempty()
kembalitrue
untuk semua nilai setara dengan palsu . Jadi dengan menggunakanempty
, kode akan melewatkan pencetakan jika nilainya adalah'0'
. Jika Anda ingin mengecualikan string kosong, lihat jawaban Augustus.isset
tidak tepat.Menurut dokumentasi PHP: http://php.net/manual/en/function.array-key-exists.php
(lihat Contoh # 2 array_key_exists () vs isset () )
Metode
array_key_exists
ini dimaksudkan untuk memeriksa keberadaan kunci dalam array.Jadi kode dalam pertanyaan bisa diubah sebagai berikut:
sumber
isset
solusi ketika bidang posting disetel tetapi berisi NULL. Ini adalah alternatif yang baik , jika Anda ingin mengizinkanNULL
dielse
cabang. Namun , ini adalah kesalahan, jika string dibutuhkan; dalam situasi ituisset
melakukan hal yang benar, tetapi kode ini tidak - itu akan meneruskanNULL
nilai. Jawaban Robert nanti menunjukkan perbedaannya.Semua metode sebenarnya tidak disarankan, ini adalah peringatan di Netbeans 7.4 dan tentunya merupakan praktik yang baik untuk tidak mengakses variabel superglobal secara langsung, gunakan filter sebagai gantinya
sumber
isset
jauh lebih mudah dibaca daripada ekspresi filter. Tapi terima kasih telah menunjukkan hal ini; ini adalah opsi yang berguna untuk dipertimbangkan.empty
, tersandung oleh pengetikan php yang longgar; sulit untuk membayangkan bahwa mengakses $ _POST akan dianggap buruk style.)Mencoba
sumber
empty($_POST['fromPerson'])
apakah tes gabungan ini. Lebih mudah untuk membaca dan mengetik :)empty('0')
kembalitrue
. Jadi tidak sama.Coba ?
isset
($_POST['fromPerson'])
sumber
sumber
is_array()
memeriksa apakah itu array, bagian kedua memeriksa apakah itu memiliki item dengan kunci'fromPerson'
.if( isset($_POST['fromPerson']) )
benar.Anda dapat menggunakan fungsi dan kembali, lebih baik daripada mengarahkan gema.
sumber
Saya ingin memeriksa apakah isset dan apakah itu kosong di operator terner.
sumber
empty('0')
adalahtrue
. Jadi lebih baik tidak punyaversion
0
, atauuserID
0
, dll.Saya ingin menambahkan jawaban saya meskipun utas ini berumur bertahun-tahun dan peringkatnya tinggi di Google untuk saya.
Metode terbaik saya adalah mencoba:
Seperti
$_POST
array, jika skrip dimuat dan tidak ada data di file$_POST
variabel, ia akan memiliki panjang array 0. Ini dapat digunakan dalam pernyataan IF.Anda mungkin juga bertanya-tanya apakah ini memunculkan kesalahan "indeks tidak terdefinisi" karena kami memeriksa apakah
$_POST
telah disetel ... Sebenarnya$_POST
selalu ada, kesalahan "indeks tak terdefinisi" hanya akan muncul jika Anda mencoba mencari $ _POST nilai larik yang tidak ada.$_POST
selalu ada dengan sendirinya kosong atau memiliki nilai larik.$_POST['value']
mungkin tidak ada, sehingga memunculkan kesalahan "indeks tidak terdefinisi".sumber