2011-09-28 31 views
8

Có thể ai đó vui lòng giải thích cho tôi về cách tính số đếm hoạt động với các mảng giống như dưới đây?Chức năng đếm PHP với mảng liên kết

Suy nghĩ của tôi sẽ là mã sau vào đầu ra 4, nguyên nhân có 4 yếu tố đó:

$a = array 
(
    "1" => "A", 
    1=> "B", 
    "C", 
    2 =>"D" 
); 

echo count($a); 

Trả lời

26

count công trình chính xác như bạn mong đợi, ví dụ nó counts all the elements in an array (or object). Nhưng giả định của bạn về mảng chứa bốn yếu tố là sai:

  • "1" bằng 1, vì vậy 1 => "B" sẽ ghi đè lên "1" => "A".
  • vì bạn đã xác định 1, chỉ số bằng số tiếp theo sẽ là 2, ví dụ: "C" là 2 => "C"
  • khi bạn chỉ định 2 => "D" bạn ghi đè "C".

Vì vậy, mảng của bạn sẽ chỉ chứa 1 => "B"2 => "D" và đó là lý do tại sao count cho 2. Bạn có thể xác minh điều này là đúng bằng cách làm print_r($a). Điều này sẽ cung cấp cho

Array 
(
    [1] => B 
    [2] => D 
) 

Vui lòng xem lại http://www.php.net/manual/en/language.types.array.php một lần nữa.

5

Bạn có thể sử dụng ví dụ này để hiểu làm thế nào đếm làm việc với mảng đệ quy

<?php 
$food = array('fruits' => array('orange', 'banana', 'apple'), 
       'veggie' => array('carrot', 'collard', 'pea')); 

// recursive count 
echo count($food, COUNT_RECURSIVE); // output 8 

// normal count 
echo count($food); // output 2 

?> 

Source

1

Mảng bạn đã tạo ra chỉ có hai yếu tố trong nó do đó số lượng trở 2. Bạn đang ghi đè lên các yếu tố , để xem whats trong mảng của bạn sử dụng:

print_r($a); 
Các vấn đề liên quan