- Php посчитать количество выведенных элементов
- Описание из учебника php что такое функция
- Пример подсчета элементов простого массива -> count
- Результат вывод подсчета количества элементов массива на экран:
- Подсчет количества элементов в ассоциативном массиве
- count
- Список параметров
- Возвращаемые значения
- Примеры
- Смотрите также
- count
- Список параметров
- Возвращаемые значения
- Примеры
- Список изменений
- Смотрите также
- array_count_values
- Список параметров
- Возвращаемые значения
- Ошибки
- Примеры
- Смотрите также
- User Contributed Notes 7 notes
Php посчитать количество выведенных элементов
Функция для подсчета элементов массива в php это — count
Описание из учебника php что такое функция
Если var не является массивом или объектом, реализующим интерфейс Countable, будет возвращена 1. За одним исключением: если var — NULL, то будет возвращён 0.
Итого, переводя с выше приведенного не человеческого смайлы на русский, внутрь функции помещаем массив, после срабатывания функции вернет числовое значение количество элементов внутри массива:
Для всего выше перечисленного нам потребуется реальный пример, чтобы на нем потренироваться!
Пример подсчета элементов простого массива -> count
Для того, чтобы продемонстрировать работу функции count и как сработает подсчет элементов массива нам потребуется тренировочный простой массив? он есть у нас $example_simple_array :
Выведем его прямо здесь через print_r? как видим все происходит в живую.
Теперь во внутрь функции count поместим наш массив $example_simple_array и выведем через echo
Результат вывод подсчета количества элементов массива на экран:
Обращаю ваше внимание на то , что нумерация элементов массива начинается с нуля и последняя ячейка по счету получается пятая, но на самом деле(если по умолчанию первый элемент счета -> первый) она 6!
Это всегда нужно держать в голове
Подсчет количества элементов в ассоциативном массиве
Как и раньше у нас есть подопытный ассоциативный массив $array выведем его также через print_r:
count
Подсчитывает количество элементов массива или что-то в объекте.
Для объектов, если у вас включена поддержка SPL, вы можете перехватить count() , реализуя интерфейс Countable. Этот интерфейс имеет ровно один метод, Countable::count() , который возвращает значение функции count() .
Пожалуйста, смотрите раздел «Массивы» в этом руководстве для более детального представления о реализации и использовании массивов в PHP.
Список параметров
Если необязательный параметр mode установлен в COUNT_RECURSIVE (или 1), count() будет рекурсивно подсчитывать количество элементов массива. Это особенно полезно для подсчёта всех элементов многомерных массивов.
count() умеет определять рекурсию для избежания бесконечного цикла, но при каждом обнаружении выводит ошибку уровня E_WARNING (в случае, если массив содержит себя более одного раза) и возвращает большее количество, чем могло бы ожидаться.
Возвращаемые значения
Возвращает количество элементов в array_or_countable . Если параметр не является массивом или объектом, реализующим интерфейс Countable, будет возвращена 1. За одним исключением: если array_or_countable — NULL , то будет возвращён 0.
count() может возвратить 0 для переменных, которые не установлены, но также может возвратить 0 для переменных, которые инициализированы пустым массивом. Используйте функцию isset() для того, чтобы протестировать, установлена ли переменная.
Примеры
Пример #1 Пример использования count()
$a [ 0 ] = 1 ;
$a [ 1 ] = 3 ;
$a [ 2 ] = 5 ;
$result = count ( $a );
// $result == 3
?php
$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()
$food = array( ‘fruits’ => array( ‘orange’ , ‘banana’ , ‘apple’ ),
‘veggie’ => array( ‘carrot’ , ‘collard’ , ‘pea’ ));
?php
// рекурсивный count
echo count ( $food , COUNT_RECURSIVE ); // выводит 8
// обычный count
echo count ( $food ); // выводит 2
Смотрите также
- is_array() — Определяет, является ли переменная массивом
- isset() — Определяет, была ли установлена переменная значением отличным от NULL
- strlen() — Возвращает длину строки
count
Подсчитывает количество элементов массива или чего-то в объекте.
Для объектов, если у вас включена поддержка SPL, вы можете перехватить count() , реализуя интерфейс Countable. Этот интерфейс имеет ровно один метод, Countable::count() , который возвращает значение функции count() .
Смотрите раздел Массивы в этом руководстве для более детального представления о реализации и использовании массивов в PHP.
Список параметров
Массив или объект, реализующий Countable.
Если необязательный параметр mode установлен в COUNT_RECURSIVE (или 1), count() будет рекурсивно подсчитывать количество элементов массива. Это особенно полезно для подсчёта всех элементов многомерных массивов.
count() умеет определять рекурсию для избежания бесконечного цикла, но при каждом обнаружении выводит ошибку уровня E_WARNING (в случае, если массив содержит себя более одного раза) и возвращает большее количество, чем могло бы ожидаться.
Возвращаемые значения
Возвращает количество элементов в value . Если параметр не является массивом или объектом, реализующим интерфейс Countable, будет возвращена 1 . За одним исключением: если value — null , то будет возвращён 0 .
Примеры
Пример #1 Пример использования count()
$a [ 0 ] = 1 ;
$a [ 1 ] = 3 ;
$a [ 2 ] = 5 ;
var_dump ( count ( $a ));
?php
$b [ 0 ] = 7 ;
$b [ 5 ] = 9 ;
$b [ 10 ] = 11 ;
var_dump ( count ( $b ));
Результат выполнения данного примера:
int(3) int(3) Warning: count(): Parameter must be an array or an object that implements Countable in … on line 12 // Начиная с PHP 7.2 int(0) Warning: count(): Parameter must be an array or an object that implements Countable in … on line 14 // Начиная с PHP 7.2 int(1)
Пример #2 Пример рекурсивного использования count()
$food = array( ‘fruits’ => array( ‘orange’ , ‘banana’ , ‘apple’ ),
‘veggie’ => array( ‘carrot’ , ‘collard’ , ‘pea’ ));
?php
// рекурсивный подсчет
echo count ( $food , COUNT_RECURSIVE ); // выводит 8
// обычный подсчет
echo count ( $food ); // выводит 2
Список изменений
Версия | Описание |
---|---|
7.2.0 | count() теперь будет выдавать предупреждение о некорректных исчисляемых типов, переданных в параметр value . |
Смотрите также
- is_array() — Определяет, является ли переменная массивом
- isset() — Определяет, была ли установлена переменная значением, отличным от null
- empty() — Проверяет, пуста ли переменная
- strlen() — Возвращает длину строки
- is_countable() — Проверить, что содержимое переменной является счетным значением
array_count_values
Функция array_count_values() возвращает массив, ключами которого являются значения массива array (которые должны быть целыми числами ( int ) или строками ( string )), а значениями — количество повторений значений array .
Список параметров
Массив подсчитываемых значений
Возвращаемые значения
Возвращает ассоциативный массив со значениями array в качестве ключей и их количества в качестве значений.
Ошибки
Генерирует ошибку уровня E_WARNING для каждого элемента, не являющегося строкой ( string ) или целым числом ( int ).
Примеры
Пример #1 Пример использования array_count_values()
Результат выполнения данного примера:
Array ( [1] => 2 [hello] => 2 [world] => 1 )
Смотрите также
- count() — Подсчитывает количество элементов массива или Countable объекте
- array_unique() — Убирает повторяющиеся значения из массива
- array_values() — Выбирает все значения массива
- count_chars() — Возвращает информацию о символах, входящих в строку
User Contributed Notes 7 notes
Simple way to find number of items with specific values in multidimensional array:
$list = [
[ ‘id’ => 1 , ‘userId’ => 5 ],
[ ‘id’ => 2 , ‘userId’ => 5 ],
[ ‘id’ => 3 , ‘userId’ => 6 ],
];
$userId = 5 ;
echo array_count_values ( array_column ( $list , ‘userId’ ))[ $userId ]; // outputs: 2
?>
Here is a Version with one or more arrays, which have similar values in it:
Use $lower=true/false to ignore/set case Sensitiv.
$ar1 [] = array( «red» , «green» , «yellow» , «blue» );
$ar1 [] = array( «green» , «yellow» , «brown» , «red» , «white» , «yellow» );
$ar1 [] = array( «red» , «green» , «brown» , «blue» , «black» , «yellow» );
#$ar1= array(«red»,»green»,»brown»,»blue»,»black»,»red»,»green»); // Possible with one or multiple Array
$res = array_icount_values ( $ar1 );
print_r ( $res );
function array_icount_values ( $arr , $lower = true ) <
$arr2 =array();
if(! is_array ( $arr [ ‘0’ ])) < $arr =array( $arr );>
foreach( $arr as $k => $v ) <
foreach( $v as $v2 ) <
if( $lower == true ) < $v2 = strtolower ( $v2 );>
if(!isset( $arr2 [ $v2 ])) <
$arr2 [ $v2 ]= 1 ;
>else <
$arr2 [ $v2 ]++;
>
>
>
return $arr2 ;
>
/*
Will print:
Array
(
[red] => 3
[green] => 3
[yellow] => 4
[blue] => 2
[brown] => 2
[white] => 1
[black] => 1
)
*/
?>
I couldn’t find a function for counting the values with case-insensitive matching, so I wrote a quick and dirty solution myself:
function array_icount_values ( $array ) $ret_array = array();
foreach( $array as $value ) foreach( $ret_array as $key2 => $value2 ) if( strtolower ( $key2 ) == strtolower ( $value )) $ret_array [ $key2 ]++;
continue 2 ;
>
>
$ret_array [ $value ] = 1 ;
>
return $ret_array ;
>
$ar = array( ‘J. Karjalainen’ , ‘J. Karjalainen’ , 60 , ’60’ , ‘J. Karjalainen’ , ‘j. karjalainen’ , ‘Fastway’ , ‘FASTWAY’ , ‘Fastway’ , ‘fastway’ , ‘YUP’ );
$ar2 = array_count_values ( $ar ); // Normal matching
$ar = array_icount_values ( $ar ); // Case-insensitive matching
print_r ( $ar2 );
print_r ( $ar );
?>
Array
(
[J. Karjalainen] => 3
[60] => 2
[j. karjalainen] => 1
[Fastway] => 2
[FASTWAY] => 1
[fastway] => 1
[YUP] => 1
)
Array
(
[J. Karjalainen] => 4
[60] => 2
[Fastway] => 4
[YUP] => 1
)
I don’t know how efficient it is, but it seems to work. Needed this function in one of my scripts and thought I would share it.
A cleaner way to use array_count_values() to find boolean counts.
$list = [
[ ‘id’ => 1 , ‘result’ => true ],
[ ‘id’ => 2 , ‘result’ => true ],
[ ‘id’ => 3 , ‘result’ => false ],
];
$result = true ;
echo array_count_values ( array_map ( ‘intval’ , array_column ( $list , ‘result’ )))[(int) $result ];
// outputs: 2
?>
The case-insensitive version:
function array_count_values_ci ( $array ) $newArray = array();
foreach ( $array as $values ) if (! array_key_exists ( strtolower ( $values ), $newArray )) $newArray [ strtolower ( $values )] = 0 ;
>
$newArray [ strtolower ( $values )] += 1 ;
>
return $newArray ;
>
?>
Based on sergolucky96 suggestion
Simple way to find number of items with specific *boolean* values in multidimensional array:
$list = [
[ ‘id’ => 1 , ‘result’ => true ],
[ ‘id’ => 2 , ‘result’ => true ],
[ ‘id’ => 3 , ‘result’ => false ],
];
$result = true ;
echo array_count_values ( array_map (function( $v ) , array_column ( $list , ‘result’ )))[ $result ]
// outputs: 2
array_count_values function does not work on multidimentional arrays.
If $score[][] is a bidimentional array, the command
«array_count_values ($score)» return the error message «Warning: Can only count STRING and INTEGER values!».
- Функции для работы с массивами
- array_change_key_case
- array_chunk
- array_column
- array_combine
- array_count_values
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_diff
- array_fill_keys
- array_fill
- array_filter
- array_flip
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_intersect
- array_is_list
- array_key_exists
- array_key_first
- array_key_last
- array_keys
- array_map
- array_merge_recursive
- array_merge
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_replace_recursive
- array_replace
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff_assoc
- array_udiff_uassoc
- array_udiff
- array_uintersect_assoc
- array_uintersect_uassoc
- array_uintersect
- array_unique
- array_unshift
- array_values
- array_walk_recursive
- array_walk
- array
- arsort
- asort
- compact
- count
- current
- end
- extract
- in_array
- key_exists
- key
- krsort
- ksort
- list
- natcasesort
- natsort
- next
- pos
- prev
- range
- reset
- rsort
- shuffle
- sizeof
- sort
- uasort
- uksort
- usort
- each