PHP

PHP array_count_values возвращает пустой массив

PHP. Почему array_count_values возвращает пустой массив, как это исправить?

sqlka.ruОпубликовано: Чтение: 2 мин.
PHP array_count_values возвращает пустой массив

Рассмотрим ситуацию: у нас есть массив с числами, и мы хотим подсчитать, сколько раз встречается каждое значение. Для этого в PHP есть удобная функция array_count_values(). Однако иногда она возвращает пустой массив, хотя исходный массив не пуст. В чём дело?

Возьмём такой код:

<?php
print_r($my_array);
print_r(array_count_values($my_array));
?>

Он выводит следующее:

Array
(
    [0] => 1.2
    [1] => 1.341
    [2] => 3.7823
    [3] => 1.3
    [4] => 1
    [5] => 1.341
    [6] => 1.3
)
Array
(
)

Как видно, первый вызов print_r показывает, что массив содержит семь элементов, но array_count_values() возвращает пустой массив.

Причина: функция array_count_values() в PHP поддерживает только элементы типа integer и string. Если в массиве присутствуют значения других типов (например, float, как в нашем случае), они игнорируются, и для них не создаются записи в результирующем массиве.

Чтобы решить проблему, нужно привести элементы к строке или целому числу перед подсчётом. Например, можно преобразовать массив с помощью array_map():

<?php
$my_array = [1.2, 1.341, 3.7823, 1.3, 1, 1.341, 1.3];
$string_array = array_map('strval', $my_array);
print_r(array_count_values($string_array));
?>

Теперь результат будет корректным:

Array
(
    [1.2] => 1
    [1.341] => 2
    [3.7823] => 1
    [1.3] => 2
    [1] => 1
)

Всегда проверяйте типы данных в массиве, прежде чем использовать array_count_values().

Хотите освоить SQL для работы с данными?

В SQLka можно изучать SQL последовательно или готовиться к собеседованиям. Запросы выполняются прямо в браузере — устанавливать базу данных не нужно.

sqlka.ru

support@sqlka.ru

Дальше по теме

PHP

Получаем список популярных поисковых запросов из Яндекс.Вебмастер через PHP API

Практическое руководство по использованию API Яндекс.Вебрастера на PHP для получения ТОП популярных поисковых запросов по вашим сайтам. Примеры кода, авторизация OAuth, обработка ответов.

sqlka.ruЧтение: 9 мин.
← Все статьи