Lebih
Bagaimana untuk memeriksa apakah sebuah array kosong dengan menggunakan PHP?
pemain
baik akan kosong atau daftar dipisahkan koma (atau nilai tunggal). Apa adalah cara termudah untuk memeriksa apakah itu's kosong? I'm asumsi saya dapat melakukannya segera setelah saya mengambil $gameresult
array ke $gamerow
? Dalam hal ini mungkin akan lebih efisien untuk melewatkan meledak $playerlist
jika's kosong, tapi demi argumen, bagaimana saya akan cek jika array kosong juga?
$gamerow = mysql_fetch_array($gameresult);
$playerlist = explode(",", $gamerow['players']);
426
18
Jika anda hanya perlu untuk memeriksa apakah ada elemen-elemen dalam array
Jika anda perlu untuk membersihkan nilai-nilai kosong sebelum pemeriksaan (umumnya dilakukan untuk mencegah `meledak a'ing aneh string):
Array kosong adalah falsey di PHP, sehingga anda don't bahkan perlu menggunakan
kosong()
sebagai orang lain telah menyarankan.PHP's
kosong()
menentukan apakah variabel doesn't ada atau memiliki falsey nilai (sepertiarray()
,0
,null
,false
, dll).Dalam kebanyakan kasus, anda hanya ingin memeriksa
!$emptyVar
. Gunakanempty($emptyVar)
jika variabel tidak mungkin telah ditetapkan DAN anda don't wont untuk memicuE_NOTICE
; IMO ini umumnya ide yang buruk.Beberapa jawaban, tetapi hanya berpikir saya'd memperluas sedikit untuk menjelaskan lebih jelas ketika PHP menentukan jika array kosong.
Catatan Utama:
Sebuah array dengan key (atau tombol) akan ditentukan sebagai kosong oleh PHP.
Sebagai nilai array perlu kunci untuk eksis, memiliki nilai-nilai atau tidak dalam array doesn't menentukan apakah itu's kosong, hanya jika tidak ada tombol (DAN oleh karena itu tidak ada nilai).
Jadi memeriksa aplikasi yang terkait dengan
empty()
doesn't hanya memberitahu anda jika anda memiliki nilai-nilai atau tidak, itu memberitahu anda jika array kosong, dan kunci adalah bagian dari sebuah array.Jadi pertimbangkan bagaimana anda akan menghasilkan array anda sebelum memutuskan yang memeriksa metode yang digunakan. MISALNYA array akan memiliki tombol ketika pengguna mengirimkan formulir HTML anda ketika masing-masing bentuk lapangan memiliki berbagai nama (ie
name="array[]"
). A non kosong array akan diproduksi untuk masing-masing bidang yang ada akan otomatis bertambah nilai-nilai kunci untuk masing-masing bidang bentuk's array.Mengambil array ini misalnya:
Jika anda echo keluar kunci array dan nilai-nilai untuk array di atas, anda mendapatkan sebagai berikut:
Dan pengujian di atas array dengan
empty()
mengembalikan hasil sebagai berikut:Sebuah array akan selalu menjadi kosong ketika anda menetapkan sebuah array tapi don't menggunakannya setelah itu, seperti:
Ini akan menjadi kosong, yaitu PHP akan mengembalikan TRUE bila menggunakan jika
kosong()
di atas.Jadi jika anda menginap memiliki tombol - baik dengan misalnya bentuk's nama masukan atau jika anda menetapkan mereka secara manual (yaitu membuat sebuah array dengan database nama-nama kolom sebagai kunci tapi tidak ada nilai-nilai/data dari database), maka array TIDAK akan menjadi
kosong()
.Dalam hal ini, anda dapat loop array dengan foreach, pengujian jika setiap tombol memiliki nilai. Ini adalah metode yang baik jika anda perlu untuk menjalankan melalui array pula, mungkin memeriksa kunci-kunci atau pembersihan data.
Namun hal ini bukan metode terbaik jika anda hanya perlu tahu "jika nilai-nilai yang ada" kembali BENAR atau PALSU. Ada berbagai metode untuk menentukan apakah sebuah array yang memiliki nilai-nilai yang ketika itu's tahu itu akan memiliki tombol. Fungsi atau kelas yang mungkin pendekatan yang terbaik, tapi seperti yang selalu tergantung pada lingkungan anda dan persyaratan yang tepat, serta hal-hal lain seperti apa yang anda lakukan saat ini dengan array (jika ada).
Berikut ini's sebuah pendekatan yang menggunakan sedikit kode untuk memeriksa jika suatu array memiliki nilai-nilai:
Menggunakan
array_filter()
: Iterates atas setiap nilai di array melewati mereka ke fungsi callback. Jika fungsi callback kembali benar, saat ini nilai dari array yang dikembalikan ke hasil array. Kunci Array yang diawetkan.Menjalankan
array_filter()
pada semua tiga contoh array (dibuat dalam pertama blok kode pada jawaban ini) hasil sebagai berikut:Jadi ketika tidak ada nilai-nilai, apakah ada tombol atau tidak, menggunakan
array_filter()
untuk membuat array baru dan kemudian memeriksa jika array kosong menunjukkan jika ada nilai-nilai dalam array asli. Hal ini tidak ideal dan sedikit berantakan, tetapi jika anda memiliki array besar dan don't perlu untuk loop melalui itu untuk alasan lain, maka ini adalah yang paling sederhana dari segi kode yang dibutuhkan.I'm tidak berpengalaman dalam memeriksa overhead, tapi itu akan baik untuk mengetahui perbedaan antara menggunakan
array_filter()
danforeach
memeriksa jika nilai ditemukan.Jelas patokan akan perlu pada berbagai parameter, pada kecil dan besar array dan ketika ada nilai-nilai dan tidak dll.
count($gamerow['players'])
akan menjadi 0.Jika anda ingin memastikan apakah variabel yang anda uji adalah benar-benar eksplisit array kosong, anda bisa menggunakan sesuatu seperti ini:
Mengapa tidak ada yang mengatakan hal ini menjawab:
is_array
Jika anda'd seperti untuk mengecualikan palsu atau baris kosong (seperti
0 => ''
), di mana menggunakankosong()
akan gagal, anda dapat mencoba:Jika anda'd seperti untuk menghapus semua NULL, FALSE dan string kosong (
''
), tapi meninggalkan nilai-nilai nol (0
), anda dapat menggunakanstrlen
sebagai callback, misalnya:jika anda ingin memeriksa hotel konten anda dapat menggunakan:
lihat di sini: http://codepad.org/EORE4k7v
Menurut saya cara paling sederhana untuk suatu array berindeks akan hanya:
An 'jika' kondisi pada array akan mengevaluasi untuk benar jika array kosong dan false jika array kosong. Ini adalah tidak berlaku untuk array asosiatif.
Saya menggunakan kode ini
Tetapi perhatikan bahwa jika array memiliki sejumlah besar kunci, kode ini akan menghabiskan banyak waktu menghitung mereka, dibandingkan dengan jawaban yang lain di sini.
Anda dapat menggunakan
array_filter()
yang karya besar untuk semua situasi:Saya pikir cara terbaik untuk menentukan jika array kosong atau tidak adalah dengan menggunakan count() seperti:
Saya telah memecahkan masalah ini dengan kode berikut.
Hal ini tampaknya bekerja untuk semua kasus
Bagaimana tentang: