Menu

PHP count(): Cara Menghitung Panjang Array

count($arr) mengembalikan jumlah elemen dalam array PHP, jadi count(['a', 'b', 'c']) bernilai 3. Pelajari cara menghitung array bersarang dengan COUNT_RECURSIVE, hubungan sizeof() dengan count(), cara menghitung nilai yang cocok, dan kenapa count(null) melempar TypeError sejak PHP 8.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

count($arr) mengembalikan jumlah elemen dalam array: count(['red', 'green', 'blue']) bernilai 3. Array PHP tidak punya property length, jadi count() adalah cara untuk mendapatkan panjang atau ukuran array.

count() itu cepat: PHP menyimpan ukurannya di dalam array, jadi menghitung sejuta elemen sama cepatnya dengan menghitung tiga.

Menghitung array multidimensi

Secara bawaan, count() hanya menghitung level teratas. Berikan COUNT_RECURSIVE (atau 1) sebagai argumen kedua untuk menghitung setiap elemen di setiap kedalaman. Array-array bersarangnya juga ikut dihitung, karena itulah totalnya sering lebih besar daripada jumlah nilai di level paling dalam.

Kedua cara singkat itu menganggap ada tepat dua level. Untuk sarang yang lebih dalam di array multidimensi, hitung nilai di level paling dalam dengan array_walk_recursive(): $n = 0; array_walk_recursive($arr, function () use (&$n) { $n++; });.

count vs sizeof

sizeof() adalah alias dari count(): argumennya sama, hasilnya sama. Pakai count(). Itulah yang dipakai hampir semua kode dan dokumentasi PHP, dan sizeof mengesankan ukuran dalam byte bagi siapa pun yang mengenal C.

Menghitung nilai yang memenuhi kondisi

count() tidak punya argumen kondisi. Filter dulu, lalu hitung: array_filter() menyimpan elemen yang diterima callback-mu. Untuk menghitung berapa kali setiap nilai muncul, pakai array_count_values().

Menghitung karakter dalam string

count() dipakai untuk array. Untuk string, pakai strlen() untuk jumlah byte atau mb_strlen() untuk jumlah karakter; keduanya berbeda begitu teksnya mengandung huruf beraksen atau bahasa Jepang. Halaman strlen membahas perbedaannya. Untuk menghitung kata, pecah dulu string-nya.

str_word_count() menganggap huruf non-ASCII sebagai pemisah, jadi naïve dihitung sebagai dua kata. Memecah berdasarkan spasi lebih bisa diprediksi untuk teks sungguhan.

count() pada null atau string akan melempar error

Sejak PHP 8, count() hanya menerima array dan objek yang mengimplementasikan Countable. Apa pun selain itu melempar TypeError, padahal PHP 7.2 sampai 7.4 mengembalikan 0 (untuk null) atau 1 (untuk string atau angka) disertai warning. Penyebab yang biasa adalah variabel yang kadang bernilai null, misalnya key yang tidak ada atau fungsi yang tidak mengembalikan apa-apa.

Beri nilai bawaan berupa array kosong dengan ??, dan hasil hitungnya 0:

Memeriksa apakah array kosong

Untuk menanyakan "apakah array ini berisi sesuatu", bandingkan dengan array kosong atau pakai empty(). count($arr) === 0 juga bisa, tetapi hanya kalau $arr sudah pasti berupa array.

empty($x) tidak pernah melempar error, bahkan saat $x belum didefinisikan atau bernilai null, sehingga lebih aman untuk nilai yang mungkin bukan array. Aturan lainnya (string kosong dan "0" juga dianggap kosong) ada di halaman empty.

Pertanyaan yang sering diajukan

Bagaimana cara mendapatkan panjang array di PHP?

Pakai count($arr). Fungsi ini mengembalikan jumlah elemen sebagai integer, jadi count([10, 20, 30]) bernilai 3. Array PHP tidak punya property length.

Apa bedanya count dan sizeof di PHP?

Tidak ada. sizeof() adalah alias dari count() dan menerima argumen yang sama. Kebanyakan kode memakai count(), dan sizeof() bisa menyesatkan pembaca yang mengenal C, karena di sana artinya ukuran dalam byte.

Bagaimana cara menghitung elemen array multidimensi?

count($arr) hanya menghitung level teratas. count($arr, COUNT_RECURSIVE) menghitung setiap elemen di setiap kedalaman, dan array-array bersarangnya juga ikut dihitung sebagai elemen.

Kenapa count() melempar TypeError di PHP 8?

Sejak PHP 8.0, count() hanya menerima array dan objek yang mengimplementasikan Countable. count(null) melempar TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given, dan count('abc') sama saja dengan string given. Pakai count($x ?? []) untuk nilai yang mungkin null, dan strlen() untuk string.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai