PHP (count ($ dizi)) ve if ($ dizi) aynı anlama mı olur?

4 Cevap php

PHP, bu her zaman aynı değerleri dönecektir?

//example 1

$array = array();

if ($array) {
   echo 'the array has items';

}

// example 2

$array = array();

if (count($array)) {
   echo 'the array has items';

}

Teşekkür ederiz!

4 Cevap

http://www.php.net/manual/en/language.types.boolean.php bakıldığında, boş bir dizi YANLIŞ kabul olduğunu söylüyor.


(Quoted): When converting to boolean, the following values are considered FALSE:

  • boolean YANLIŞ kendisi
  • tamsayı 0 (sıfır)
  • şamandıra 0,0 (sıfır)
  • boş dize, ve dize "0"
  • an array with zero elements
  • Sıfır üye değişkenler (sadece PHP 4) ile bir nesne
  • (tanımsız değişkenler dahil) özel tip NULL
  • Boş etiketlerle oluşturulmuş SimpleXML nesneleri


Beri

  • > 0 bir sayısı () YANLIŞ DEĞİL
  • bir dolu dizi YANLIŞ DEĞİL

beklendiği gibi daha sonra söz gösterilen iki olgu her zaman çalışacaktır.

Bunlar hep aynı değeri dönecektir, ama ben buluyorum

$array = array();

if (empty($array)) {
   echo 'the array is empty';
}

çok daha okunabilir olması.

Gerçekten de onlar olacaktır. Bir bool bir dizi dönüştürme dışı boş ise size gerçek vermek ve bir dizi sayısı birden fazla elemanı ile gerçek olacaktır.

Ayrıca bakınız: http://ca2.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

Not ikinci örnek (10000 yineleme üzerinde) benim sistemde en az% 50 oranında önemli ölçüde yavaştır (count() kullanarak). count() aslında bir dizinin elemanları sayar. Ben olumlu değilim, ama ben çok empty() gibi bir boolean eserleri için bir dizi döküm hayal, ve en kısa sürede en az bir elemanı bulur gibi durur.