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']);
Larutan

Jika anda hanya perlu untuk memeriksa apakah ada elemen-elemen dalam array

if (empty($playerlist)) {
     // list is empty.
}

Jika anda perlu untuk membersihkan nilai-nilai kosong sebelum pemeriksaan (umumnya dilakukan untuk mencegah `meledak a'ing aneh string):

foreach ($playerlist as $key => $value) {
    if (empty($value)) {
       unset($playerlist[$key]);
    }
}
if (empty($playerlist)) {
   //empty array
}
Komentar (4)

Array kosong adalah falsey di PHP, sehingga anda don't bahkan perlu menggunakan kosong() sebagai orang lain telah menyarankan.

<?php
$playerList = array();
if (!$playerList) {
    echo "No players";
} else {
    echo "Explode stuff...";
}
// Output is: No players

PHP's kosong() menentukan apakah variabel doesn't ada atau memiliki falsey nilai (seperti array(), 0, null, false, dll).

Dalam kebanyakan kasus, anda hanya ingin memeriksa !$emptyVar. Gunakan empty($emptyVar) jika variabel tidak mungkin telah ditetapkan DAN anda don't wont untuk memicu E_NOTICE; IMO ini umumnya ide yang buruk.

Komentar (1)

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:

/* Assigning some arrays */

// Array with user defined key and value
$ArrayOne = array("UserKeyA" => "UserValueA", "UserKeyB" => "UserValueB");

// Array with auto increment key and user defined value
// as a form field would return with user input
$ArrayTwo[] = "UserValue01";
$ArrayTwo[] = "UserValue02";

// Array with auto incremented key and no value
// as a form field would return without user input
$ArrayThree[] = '';
$ArrayThree[] = '';

Jika anda echo keluar kunci array dan nilai-nilai untuk array di atas, anda mendapatkan sebagai berikut:

ARRAY SATU: [UserKeyA] => [UserValueA] [UserKeyB] => [UserValueB]

ARRAY DUA: [0] => [UserValue01] [1] => [UserValue02]

ARRAY TIGA: [0] => [] [1] => []

Dan pengujian di atas array dengan empty() mengembalikan hasil sebagai berikut:

ARRAY SATU: $ArrayOne tidak kosong

ARRAY DUA: $ArrayTwo tidak kosong

ARRAY TIGA: $ArrayThree tidak kosong

Sebuah array akan selalu menjadi kosong ketika anda menetapkan sebuah array tapi don't menggunakannya setelah itu, seperti:

$ArrayFour = array();

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.

$EmptyTestArray = array_filter($ArrayOne);

if (!empty($EmptyTestArray))
  {
    // do some tests on the values in $ArrayOne
  }
else
  {
    // Likely not to need an else, 
    // but could return message to user "you entered nothing" etc etc
  }

Menjalankan array_filter() pada semua tiga contoh array (dibuat dalam pertama blok kode pada jawaban ini) hasil sebagai berikut:

ARRAY SATU: $arrayone tidak kosong

ARRAY DUA: $arraytwo tidak kosong

ARRAY TIGA: $arraythree kosong

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() dan foreach memeriksa jika nilai ditemukan.

Jelas patokan akan perlu pada berbagai parameter, pada kecil dan besar array dan ketika ada nilai-nilai dan tidak dll.

Komentar (6)
Komentar (1)

Jika anda ingin memastikan apakah variabel yang anda uji adalah benar-benar eksplisit array kosong, anda bisa menggunakan sesuatu seperti ini:

if ($variableToTest === array()) {
    echo 'this is explicitly an empty array!';
}
Komentar (0)

Mengapa tidak ada yang mengatakan hal ini menjawab:

$array = [];

if($array == []) {
    // array is empty
}
Komentar (0)
is_array($detect) && empty($detect);

is_array

Komentar (0)

Jika anda'd seperti untuk mengecualikan palsu atau baris kosong (seperti 0 => &#39;&#39;), di mana menggunakan kosong() akan gagal, anda dapat mencoba:

if (array_filter($playerlist) == []) {
  // Array is empty!
}

array_filter(): Jika tidak ada callback yang diberikan, semua entri dari array sama dengan PALSU (lihat konversi ke boolean) akan dihapus.

Jika anda'd seperti untuk menghapus semua NULL, FALSE dan string kosong (&#39;&#39;), tapi meninggalkan nilai-nilai nol (0), anda dapat menggunakan strlen sebagai callback, misalnya:

$is_empty = array_filter($playerlist, 'strlen') == [];
Komentar (0)

jika anda ingin memeriksa hotel konten anda dapat menggunakan:

$arr = array();

if(!empty($arr)){
  echo "not empty";
}
else 
{
  echo "empty";
}

lihat di sini: http://codepad.org/EORE4k7v

Komentar (0)

Menurut saya cara paling sederhana untuk suatu array berindeks akan hanya:

    if ($array) {
      //Array is not empty...  
    }

An 'jika' kondisi pada array akan mengevaluasi untuk benar jika array kosong dan false jika array kosong. Ini adalah tidak berlaku untuk array asosiatif.

Komentar (1)

Saya menggunakan kode ini

$variable = array();

if( count( $variable ) == 0 )
{
    echo "Array is Empty";
}
else
{
    echo "Array is not Empty";
}

Tetapi perhatikan bahwa jika array memiliki sejumlah besar kunci, kode ini akan menghabiskan banyak waktu menghitung mereka, dibandingkan dengan jawaban yang lain di sini.

Komentar (0)

Anda dapat menggunakan array_filter() yang karya besar untuk semua situasi:

$ray_state = array_filter($myarray);

if (empty($ray_state)) {
    echo 'array is empty';
} else {
    echo 'array is not empty';
}
Komentar (0)
 $gamerow = mysql_fetch_array($gameresult);

if (!empty(($gamerow['players'])) {
   $playerlist = explode(",", $gamerow['players']);
}else{

  // do stuf if array is empty
}
Komentar (0)

Saya pikir cara terbaik untuk menentukan jika array kosong atau tidak adalah dengan menggunakan count() seperti:

if(count($array)) {
    return 'anything true goes here';
}else {
    return 'anything false'; 
}
Komentar (0)
empty($gamerow['players'])
Komentar (1)

Saya telah memecahkan masalah ini dengan kode berikut.

$catArray=array();                          

$catIds=explode(',',$member['cat_id']);
if(!empty($catIds[0])){
foreach($catIds as $cat_id){
$catDetail=$this->Front_Category->get_category_detail($cat_id);
$catArray[]=$catDetail['allData']['cat_title'];
}
echo implode(',',$catArray);
}
Komentar (1)

Hal ini tampaknya bekerja untuk semua kasus

if(!empty(sizeof($array)))
Komentar (1)

Bagaimana tentang:

DepartmentPerSchool = array();
(kosong(is_array($DepartmentPerSchool))) ? $DepartmentPerSchool //atau echo tidak kosong : array('tidak diatur'=>'Tidak diatur. Kontak Admin'); //atau echo kosong
Komentar (0)