Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Подсчет повторяющих елементов в массиве php

#массивы #php


Здраствуйте.
Есть код допустим
"bla bla","result"=>array());
$list["result"][]=array("type"=>"movie","title"=>"ahaha");
$list["result"][]=array("type"=>"movie","title"=>"ahaha");
$list["result"][]=array("title"=>"blblblbl");

?>

Как подсчитать количество в массиве $list["result"] записей с type "movie"
Узнавать через for или fosearch ненадо. (очень часто надо будет проверять).
Если есть уже стандартная функция то просьба подсказать.
Спасибо.    


Ответы

Ответ 1



$count = array_reduce($list["result"], function($l, $r) { return $l + (isset($r["type"]) && $r["type"] == "movie" ? 1 : 0); }, 0); Если PHP < 5.3, то вместо анонимной функции нужно использовать обычную, разумеется. очень часто надо будет проверять В таких случаях код просто выносится в функцию.

Ответ 2



А чем Вам не нравится циклический перебор? Думаете стандартная функция будет как-то по другому считать? Если массив динамически меняется во время работы программы, и нагрузка при пересчете количества вхождений велика, то можно сделать так function addMovie(name){ global $list, $entries; $list['result'][]=name $entries+=1; }; Не спорю, есть функция array_count_values, но она создаст еще большую нагрузку.

Ответ 3



Есть специальная функция для подсчета элементов в массиве - array_count_values (); $array = array (1, "hello", 1, "world", "hello"); print_r(array_count_values ($array)); Результат: Array ( [1] => 2 [hello] => 2 [world] => 1 )

Комментариев нет:

Отправить комментарий