Hướng dẫn dùng function count trong PHP

Nội dung chính

1. Chức năng của hàm count()

Hàm count() trong PHP có chức năng đếm số lượng phần tử trong mảng hoặc lấy ra giá trị nào đó trong một đối tượng có thể đếm được (Countable object).

Hướng dẫn dùng function count trong PHP

2. Cú pháp của hàm count()

count(Countable|array $value, int $mode = COUNT_NORMAL): int

Trong đó:

  • $value là một mảng hoặc một đối tượng có thể đếm được (Countable object).
  • $mode: tham số tùy chọn. Mặc định là hằng số COUNT_NORMAL (có giá trị là 0). Nếu $mode là hằng số COUNT_RECURSIVE (có giá trị là 1) thì hàm count() có thể đếm tất cả các phần tử trong mảng nhiều chiều.
  • Kiểu dữ liệu trả về là kiểu int chứa số phần tử đếm được.

3. Một số ví dụ sử dụng hàm count()

Đếm số lượng phần tử trong mảng

$array = array("1", "5", "9");
$value = count($array);//3

Đối số của hàm count() không phải là mảng hoặc Countable object sẽ báo lỗi

$a = 5;
$value1 = count($a);
$value2 = count(null);
$value3 = count(false);
Kết quả xuất lỗi
Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array

Sử dụng hàm count() với Countable object

class CountMe implements Countable
{

    protected $_myCount = 100;

    public function count()
    {
        return $this->_myCount;
    }

}

$countable = new CountMe();
$value = count($countable);//100

Đếm số lượng phần tử trong mảng của mảng

$food = array('fruits' => array('orange', 'banana', 'apple'),
              'veggie' => array('carrot', 'collard', 'pea'));
$value1 = count($food, COUNT_RECURSIVE);//8

$value2 = count($food);//2
//hoặc
$value3 = count($food, COUNT_NORMAL);//2

Hàm count() trong PHP rất dễ sử dụng chỉ cần bạn lưu ý truyền đối số cho hàm phải là mảng hoặc Countable object.

  • Hàm đệ quy trong lập trình và minh họa với C++
  • Cách sử dụng decorator trong Python
  • Chương trình tính giai thừa (factorial) trong Java
  • Cách xử lý ngoại lệ (exception) trong Python
  • Cách sử dụng biến (variable) và hằng (constant) trong PHP

5/5 - (1 bình chọn)

Chia sẻ trên mạng xã hội:

PHP programming

Nếu tham số mode tùy ý được thiết lập là COUNT_RECURSIVE (hoặc 1), hàm count() sẽ đếm một cách đệ qui mảng đó. Việc này thực sự hữu ích với trường hợp đếm các phần tử trong mảng đa chiều. Giá trị mặc định cho mode là 0. Hàm count() trong PHP không phát hiện sự đệ qui vô hạn.

Cú pháp hàm count() trong PHP

Hàm count() trong PHP có cú pháp như sau:

count($array, $mode );

Tham số

  • array: Bắt buộc. Xác định một mảng
  • mode: Tùy ý. Xác định mode của hàm

Trả về giá trị

Trả về số phần tử trong một mảng.

Ví dụ minh họa cách sử dụng hàm count() trong PHP:

 

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

Như mình đã nói thì hàm count() sẽ trả về số phần tử của mảng được đếm, nếu đối tượng được truyền vào không phải là một mảng, đồng thời cũng không phải một đối tượng của Countable thì sẽ trả về 1. Trường hợp ngược lại khi đối tượng là NULL sẽ trả về 0.

Lưu ý

Hàm count() có thể phát hiện đệ quy để tránh một vòng lặp vô hạn, nhưng sẽ ném ra một E_WARNING mỗi khi nó xảy ra (trong trường hợp mảng chứa chính nó nhiều lần) và trả về một số lượng cao hơn dự kiến.

Ví dụ : đếm và trả về số lượng phần tử trong một mảng

Kết quả

5
3. Ví dụ về hàm count() trong PHP

Ví dụ 1: đếm đệ quy một mảng

array
   (
   "60",
   "90"
   ),
   "Java"=>array
   (
   "X3",
   "X5"
   ),
   "HTML"=>array
   (
   "CSS"
   )
   ); 
echo "Đếm bình thường: " . count($cars)."
"; echo "Đếm một cách đệ quy: " . count($cars,1); ?>

Kết quả

Đếm bình thường: 3
Đếm theo cách đệ quy: 8

Ta cũng có thể thay 1 bằng COUNT_RECURSIVE để đếm một cách đệ quy

Ví dụ 2: sử dụng hàm count() với Countable object

_myCount;
    }

}

$countable = new CountMe();
$value = count($countable);
?>

Kết quả

100

Trong các trường hợp ta cần triển khai một vòng lặp, có thể sử dụng count() thì hãy sử dụng giải pháp sau, để tối ưu code hơn.

//Hiệu năng kém
for($i=0;$i

Nếu ta muốn kiếm tra số phần tử không phải là mảng trong một mảng đa chiều bạn có thể sử dụng cách sau