<?php
//PHP count function
$arr=array("hasan"=>array("Name"=>"Hasan Al Mamun","Address"=>"Uttara, Dhaka","Profession"=>"Web Developer"),
"meathanjay"=>array("Name"=>"Meathanjay","Address"=>"Nawabgonj, Dhaka","Profession"=>"Nothing")
);
echo count($arr);
//Output 2
$arr=array("hasan"=>array("Name"=>"Hasan Al Mamun","Address"=>"Uttara, Dhaka","Profession"=>"Web Developer"),
"meathanjay"=>array("Name"=>"Meathanjay","Address"=>"Nawabgonj, Dhaka","Profession"=>"Nothing")
);
echo count($arr,1);
//Output 8 when second Parameter true
count
(PHP 4, PHP 5)
count — Zlicza ilość elementów w tablicy lub pól obiektu
Opis
Zwraca ilość elementów w parametrze zmienna,
która zazwyczaj będzie tablicą, jako że wszystko inne będzie miało
jeden element.
Dla obiektów, jeśli zainstalowane zostało rozszerzenie SPL, możliwe jest podłączenie do count() poprzez zaimplementowanie interfejsu Countable. Interfejs ten posiada dokładnie jedną metodę, count(), która zwraca wartość, którą ma zwrócić funkcja count().
Jeśli zmienna nie jest tablicą ani obiektem z
zaimplementowanym interfejsem Countable, to zwracana
będzie wartość 1. Istnieje jeden wyjątek - jeśli
zmienna będzie miała wartość NULL, zwrócona
zostanie wartość 0.
Informacja: Opcjonalny argument
trybdostępny jest od wersji PHP 4.2.0.
Jeśli opcjonalny argument tryb ustawiony jest na
COUNT_RECURSIVE (lub 1), count()
będzie zliczał elementy rekurencyjnie. Jest to przydatne przy zliczaniu
ilości wszystkich elementów tablicy wielowymiarowej. Domyślna wartość
argumentu tryb to 0.
count() nie wykrywa nieskończonej rekurencji.
count() może zwrócić 0 dla zmiennej, która nie została zainicjalizowana, ale możę zwrócić także 0 dla zmiennej która została zainicjalizowana pustą tablicą. Użyj isset() aby sprawdzić czy zmienna została ustawiona.
Więcej informacji na temat sposobu implementacji tablic w PHP można znaleźć w rozdziale Tablice.
Przykład #1 Przykład użycia count()
<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$wynik = count ($a);
// $wynik == 3
$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
$wynik = count ($b);
// $wynik == 3
$wynik = count(null);
// $wynik == 0
$wynik = count(false);
// $wynik = 1
?>
Przykład #2 Przykład rekurencyjnego przetwarzania przez count() (PHP >= 4.2.0)
<?php
$jedzenie = array('owoce' => array('pomarańcza', 'banan', 'jabłko'),
'warzywa' => array('marchewka', 'kukurydza', 'groszek'));
// zliczanie rekurencyjne
echo count($jedzenie, COUNT_RECURSIVE); // wyświetli 8
// normal count
echo count($jedzenie); // wyświetli 2
?>
Patrz także: is_array(), isset() i strlen().
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;
}
?>
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;
}
?>
Please note: While SPL is compiled into PHP by default starting with PHP 5, the Countable interface is not available until 5.1
Hi there,
there is a simple script with example for counting rows and columns of a two-dimensional array.
<?php
$data = array(
"apples" =>
array("red", "yellow", "pineapples"),
"bananas" =>
array("small", "medium", "big"),
"vegs" =>
array("potatoes", "carrots", "onions")
);
$rows = count($data,0);
$cols = (count($data,1)/count($data,0))-1;
print "There are {$rows} rows and {$cols} columns in the table!";
?>
If you want to count only elements in the second level of 2D arrays.A close to mind note, useful for multidimentional arrays:
<?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
// all the fruits and veggies
echo (count($food,COUNT_RECURSIVE)-count($food,0)); //output 6
?>
As of PHP 5.2.6, count() DOES detect infinite recursion.
It triggers a warning when its argument is a recursive array.
<php
function CountArray($arr){
$i=0;
foreach($arr as $val){
$i++;
}
return $i;
}
$arr=array(1,2,3,4,5,6,7,8,9);
echo CountArray($arr); // output 9
?>
