#массивы #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 )
Комментариев нет:
Отправить комментарий