count

(PHP 4, PHP 5, PHP 7, PHP 8)

count — Bir dizideki veya bir Countable nesnesindeki eleman sayısını döndĂŒrĂŒr

Açıklama

function count(Countable|array $girdi, int $kip = COUNT_NORMAL): int

Bir dizi belirtilirse dizideki eleman sayısını döndĂŒrĂŒr. Countable arayĂŒzĂŒnĂŒ gerçekleyen bir nesne belirtilirse Countable::count() yönteminin dönĂŒĆŸ değerini döndĂŒrĂŒr.

Bağımsız Değißkenler

girdi

Dizi veya Countable nesnesi.

kip

İsteğe bağlı kip bağımsız değißkenine COUNT_RECURSIVE (veya 1) atanırsa, count() ißlevi diziyi ardıßık olarak sayar. Böylece çok boyutlu bir dizinin bĂŒtĂŒn elemanları sayılabilir. count() sonsuz iç içeliği algılayacak yetenekte değildir.

Dikkat

count() ißlevi sonsuz döngĂŒden kaçınmak için iç içeliği saptayabilir, fakat bunu her yaptığında (dizinin kendisini birden fazla içerdiği durumda) bir E_WARNING çıktılar ve beklenenden daha yĂŒksek bir miktar döndĂŒrĂŒr.

Dönen Değerler

girdi'deki eleman sayısını döndĂŒrĂŒr. PHP 8.0.0 öncesinde girdi bir dizi veya Countable arayĂŒzĂŒ ile gerçeklenmiß bir nesne değilse 1 dönerdi, girdi'nin null olması durumunda ise 0 dönerdi.

SĂŒrĂŒm Bilgisi

SĂŒrĂŒm: Açıklama
8.0.0 değer bağımsız değißkenine geçerli olmayan sayılabilir tĂŒrler aktarıldığında ißlev artık bir TypeError yavruluyor.
7.2.0 değer bağımsız değißkenine geçerli olmayan sayılabilir tĂŒrler aktarıldığında ißlev artık bir uyarı çıktılıyor.

Örnekler

Örnek 1 - count() örneği

<?php
$a
[0] = 1;
$a[1] = 3;
$a[2] = 5;
var_dump(count($a));

$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
var_dump(count($b));
?>

Yukarıdaki örneğin çıktısı:

int(3)
int(3)

Örnek 2 - count() geçersiz Countable|array örneği (kötĂŒ örnek - yapmaktan sakının)

<?php
$b
[0] = 7;
$b[5] = 9;
$b[10] = 11;
var_dump(count($b));

var_dump(count(null));

var_dump(count(false));
?>

Yukarıdaki örneğin çıktısı:

int(3)

Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable .. on line 12

Örnek 3 - Ardıßık count() örneği

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

// ardıßık sayım
var_dump(count($food, COUNT_RECURSIVE));

// normal sayım
var_dump(count($food));

?>

Yukarıdaki örneğin çıktısı:

int(8)
int(2)

Örnek 4 - Countable nesnesi

<?php
class CountOfMethods implements Countable
{
private function
someMethod()
{
}

public function
count(): int
{
return
count(get_class_methods($this));
}
}

$obj = new CountOfMethods();
var_dump(count($obj));
?>

Yukarıdaki örneğin çıktısı:

int(2)

Ayrıca Bakınız

  • is_array() - Değißkenin bir dizi içerip içermediğine bakar
  • isset() - Değißken bildirilmiß ve null değil mi diye bakar
  • empty() - Bir değißkenin boß olup olmadığını saptar
  • strlen() - Dizge uzunluğunu döndĂŒrĂŒr
  • is_countable() - Değißken değerinin sayılabilirliğine bakar
  • Diziler
add a note

User Contributed Notes 6 notes

up
145
onlyranga at gmail dot com ¶
12 years ago
[Editor's note: array at from dot pl had pointed out that count() is a cheap operation; however, there's still the function call overhead.]

If you want to run through large arrays don't use count() function in the loops , its a over head in performance,  copy the count() value into a variable and use that value in loops for a better performance.

Eg:

// Bad approach

for($i=0;$i<count($some_arr);$i++)
{
    // calculations
}

// Good approach

$arr_length = count($some_arr);
for($i=0;$i<$arr_length;$i++)
{
    // calculations
}
up
3
lucasfsmartins at gmail dot com ¶
7 years ago
If you are on PHP 7.2+, you need to be aware of "Changelog" and use something like this:

<?php
$countFruits = is_array($countFruits) || $countFruits instanceof Countable ? count($countFruits) : 0;
?>

You can organize your code to ensure that the variable is an array, or you can extend the Countable so that you don't have to do this check.
up
12
danny at dannymendel dot com ¶
18 years ago
I actually find the following function more useful when it comes to multidimension arrays when you do not want all levels of the array tree.

// $limit is set to the number of recursions
<?php
function count_recursive ($array, $limit) {
    $count = 0;
    foreach ($array as $id => $_array) {
        if (is_array ($_array) && $limit > 0) {
            $count += count_recursive ($_array, $limit - 1);
        } else {
            $count += 1;
        }
    }
    return $count;
}
?>
up
10
alexandr at vladykin dot pp dot ru ¶
19 years ago
My function returns the number of elements in array for multidimensional arrays subject to depth of array. (Almost COUNT_RECURSIVE, but you can point on which depth you want to plunge).

<?php
  function getArrCount ($arr, $depth=1) {
      if (!is_array($arr) || !$depth) return 0;
         
     $res=count($arr);
         
      foreach ($arr as $in_ar)
         $res+=getArrCount($in_ar, $depth-1);
      
      return $res;
  }
?>
up
2
pied-pierre ¶
11 years ago
A function of one line to find the number of elements that are not arrays, recursively :

function count_elt($array, &$count=0){
  foreach($array as $v) if(is_array($v)) count_elt($v,$count); else ++$count;
  return $count;
}
up
0
Anonymous ¶
6 years ago
For a Non Countable Objects

$count = count($data);
print "Count: $count\n";

Warning:  count(): Parameter must be an array or an object that implements Countable in example.php on line 159

#Quick fix is to just cast the non-countable object as an array..  

$count = count((array) $data);
print "Count: $count\n";

Count: 250