@kyja

Как подсчитать множественный список значений в массиве?

Массив значений для поиска
$filters
array(9) {
  [0]=>
  string(1) "6"
  [1]=>
  string(1) "8"
  [2]=>
  string(2) "11"
  [3]=>
  string(2) "13"
  [4]=>
  string(2) "16"
  [5]=>
  string(2) "18"
  [6]=>
  string(2) "20"
  [7]=>
  string(2) "22"
  [8]=>
  string(2) "24"
}


Массив по которому идет поиск
$all_items
array(30) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "1"
  [2]=>
  string(1) "1"
  [3]=>
  string(1) "3"
  [4]=>
  string(1) "3"
  [5]=>
  string(1) "4"
  [6]=>
  string(1) "4"
  [7]=>
  string(1) "6"
  [8]=>
  string(1) "6"
  [9]=>
  string(1) "6"
  [10]=>
  string(1) "6"
  [11]=>
  string(1) "6"
  [12]=>
  string(1) "6"
  [13]=>
  string(1) "6"
  [14]=>
  string(1) "6"
  [15]=>
  string(1) "6"
  [16]=>
  string(1) "6"
  [17]=>
  string(1) "6"
  [18]=>
  string(1) "6"
  [19]=>
  string(1) "6"
  [20]=>
  string(1) "6"
  [21]=>
  string(1) "6"
  [22]=>
  string(1) "6"
  [23]=>
  string(1) "6"
  [24]=>
  string(1) "8"
  [25]=>
  string(1) "8"
  [26]=>
  string(1) "8"
  [27]=>
  string(1) "8"
  [28]=>
  string(1) "8"
  [29]=>
  string(1) "8"
}


Подскажите пожалуйста как с помощью array_count_values или array_filter
Подсчитать только строки в $all_items которые содержать значения из значений $filters
В данном примере должно получится что
6=17, 8=6 всего 23
В гугле все примеры идут с 1 значением а не массивом значений
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
0xD34F
@0xD34F
$result = array_sum(array_filter(
  array_count_values($all_items),
  fn($n) => in_array($n, $filters),
  ARRAY_FILTER_USE_KEY
));

или

$result = count(array_intersect($all_items, $filters));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы