count($arr) bir dizideki eleman sayısını döndürür: count(['red', 'green', 'blue']) 3'tür. PHP dizilerinde length özelliği yoktur, bu yüzden bir dizinin uzunluğunu veya boyutunu count() ile alırsınız.
count() hızlıdır: PHP boyutu dizinin içinde saklar, bu yüzden bir milyon elemanı saymak üç elemanı saymakla aynı maliyettedir.
Çok boyutlu bir diziyi sayma
Varsayılan olarak count() yalnızca en üst seviyeyi sayar. Her derinlikteki her elemanı saymak için ikinci argüman olarak COUNT_RECURSIVE (veya 1) verin. İç içe dizilerin kendisi de sayılır, toplamın yaprak değerlerin sayısından çoğu zaman büyük olmasının nedeni budur.
İki kısayol da tam olarak iki seviye varsayar. Bir çok boyutlu dizide daha derin iç içelik için yaprakları array_walk_recursive() ile sayın: $n = 0; array_walk_recursive($arr, function () use (&$n) { $n++; });.
count ile sizeof karşılaştırması
sizeof(), count() fonksiyonunun bir takma adıdır: aynı argümanlar, aynı sonuç. count() kullanın. Neredeyse tüm PHP kodları ve belgeleri onu kullanır ve sizeof C bilen herkese bayt cinsinden bir boyut çağrıştırır.
Bir koşula uyan değerleri sayma
count() fonksiyonunun koşul argümanı yoktur. Önce filtreleyin, sonra sayın: array_filter() geri çağırma fonksiyonunuzun kabul ettiği elemanları tutar. Her değerin kaç kez geçtiğini saymak için array_count_values() kullanın.
Bir dizgedeki karakterleri sayma
count() diziler içindir. Bir dizge için baytlar için strlen(), karakterler için mb_strlen() kullanın; metinde aksanlı harfler veya Japonca olduğu anda farklı sonuç verirler. Fark strlen sayfasında anlatılıyor. Kelimeleri saymak için önce bölün.
str_word_count() ASCII olmayan harfleri ayırıcı olarak görür, bu yüzden naïve iki kelime sayılır. Gerçek metinlerde boşluklara göre bölmek daha öngörülebilirdir.
null veya dizge üzerinde count() hata fırlatır
PHP 8'den beri count() yalnızca dizileri ve Countable uygulayan nesneleri kabul eder. Diğer her şey bir TypeError fırlatır; PHP 7.2 ile 7.4 arasında ise bir uyarıyla birlikte 0 (null için) veya 1 (bir dizge veya sayı için) döndürülürdü. Olağan neden bazen null olan bir değişkendir, örneğin eksik bir anahtar ya da hiçbir şey döndürmeyen bir fonksiyon.
Değere ?? ile varsayılan olarak boş bir dizi verin, sayı 0 olur:
Bir dizinin boş olup olmadığını kontrol etme
"Bu dizide bir şey var mı" diye sormak için boş bir diziyle karşılaştırın veya empty() kullanın. count($arr) === 0 da çalışır, ama yalnızca $arr kesinlikle bir dizi olduğunda.
empty($x), $x tanımsız veya null olsa bile asla hata fırlatmaz, bu da onu dizi olmayabilecek bir değer için daha güvenli kontrol yapar. Diğer kuralları (boş bir dizge ve "0" da boş sayılır) empty sayfasında.
Sıkça Sorulan Sorular
PHP'de bir dizinin uzunluğunu nasıl alırım?
count($arr) kullanın. Eleman sayısını tam sayı olarak döndürür, yani count([10, 20, 30]) 3'tür. PHP dizilerinde length özelliği yoktur.
PHP'de count ile sizeof arasındaki fark nedir?
Hiçbiri. sizeof(), count() fonksiyonunun bir takma adıdır ve aynı argümanları alır. Kodların çoğu count() kullanır; sizeof() ise bayt anlamına geldiği C'yi bilen okuyucuları yanıltabilir.
Çok boyutlu bir dizinin elemanlarını nasıl sayarım?
count($arr) yalnızca en üst seviyeyi sayar. count($arr, COUNT_RECURSIVE) her derinlikteki her elemanı sayar ve iç içe diziler de eleman olarak sayılır.
PHP 8'de count() neden TypeError fırlatıyor?
PHP 8.0'dan beri count() yalnızca dizileri ve Countable uygulayan nesneleri kabul eder. count(null) TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given fırlatır, count('abc') de aynısını string given ile fırlatır. null olabilecek bir değer için count($x ?? []), dizgeler için strlen() kullanın.