count

(PHP 4, PHP 5)

count — Посчитать количество элементов массива или количество свойств объекта

Описание

int count ( mixed $var [, int $mode ] )

Возвратить количество элементов переменной var , которая обычно является array, или любым другим объектом, который может содержать хотя бы один элемент.

Для объектов count() возвращает количество нестатических свойств, не принимая во внимание видимость. Если у вас включена поддержка SPL, вы можете перехватить count(), реализуя интерфейс Countable. Этот интерфейс имеет только один метод, count(), который возвращает значение функции count().

Если var не является массивом или объектом, реализующим интерфейс Countable, будет возвращена 1. За одним исключением: если var - NULL, то будет возвращён 0.

Замечание: Дополнительный параметр mode был добавлен начиная с PHP 4.2.0.

Если дополнительный параметр mode установлен в COUNT_RECURSIVE (или 1), count() будет считать количество элементов массива рекурсивно. Это особенно полезно для подсчёта всех элементов многомерных массивов. Предустановленное значение параметра mode - 0. count() не обнаруживает бесконечную рекурсию.

Предостережение

count() может возвратить 0 для переменных, которые не установлены, но также может возвратить 0 для переменных, которые инициализированы пустым массивом. Используйте функцию isset() для того, чтобы протестировать, установлена ли переменная.

Пожалуйста, см. раздел этого руководства Array для того, чтобы получить детальное представление о реализации и использовании массивов в PHP.

Пример #1 Пример использования count()

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

$b[0]  = 7;
$b[5]  = 9;
$b[10] = 11;
$result count($b);
// $result == 3;

$result count(null);
// $result == 0;

$result count(false);
// $result == 1;
?>

Пример #2 Пример рекурсивного использования count() (PHP >= 4.2.0)

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

// рекурсивный count
echo count($foodCOUNT_RECURSIVE);  // output 8

// обычный count
echo count($food);                  // output 2

?>

См. также is_array(), isset() и strlen().

Коментарии

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;
  }
?>
2006-11-08 06:28:14
http://php5.kiev.ua/manual/ru/function.count.html
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;
}
?>
2007-06-13 16:14:43
http://php5.kiev.ua/manual/ru/function.count.html
[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
}
2014-04-28 05:14:32
http://php5.kiev.ua/manual/ru/function.count.html
Автор:
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;
}
2015-06-04 20:27:30
http://php5.kiev.ua/manual/ru/function.count.html
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.
2019-03-08 01:26:35
http://php5.kiev.ua/manual/ru/function.count.html
Автор:
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
2019-10-05 08:52:20
http://php5.kiev.ua/manual/ru/function.count.html
Perhaps this could help someone :
<?php
function array_contains_recursion(array $array): bool {
   
$result false;
   
set_error_handler(function (int $astring $bstring $cint $d) use (&$result) : bool {
       
$result true;
        return 
true;
    });
   
$_ count($arrayCOUNT_RECURSIVE);
   
restore_error_handler();
    return 
$result;
}

// ...

$a = [];
var_dump(array_contains_recursion($a)); // false
$a[] = &$a;
var_dump(array_contains_recursion($a)); // true
2024-12-21 18:12:18
http://php5.kiev.ua/manual/ru/function.count.html

    Поддержать сайт на родительском проекте КГБ