Menu

PHP count(): Dizi Uzunluğunu ve Eleman Sayısını Bulma

count($arr) bir PHP dizisindeki eleman sayısını döndürür, yani count(['a', 'b', 'c']) 3'tür. İç içe dizileri COUNT_RECURSIVE ile saymayı, sizeof() ile count() ilişkisini, eşleşen değerleri saymayı ve count(null) ifadesinin PHP 8'den beri neden TypeError fırlattığını öğrenin.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

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.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA