Как в PHP удалить из массива все нечисла

Как в PHP удалить из массива все элементы не являющиеся числами или числовыми строками.

Фильтрация массива

Чтобы удалить из массива элементы согласно заданного условия, в PHP используют функцию array_filter().

array_filter(array $array, ?callable $callback = null, int $mode = 0): array

PHP-функция array_filter фильтрует элементы массива через callback-функцию (документация array-filter).


Для примера, в переменной $arr возьмём следующий массив:

$arr = [4, '', 'test', '24', null, '12.54', 'dfg', 0, true, false, 8.4];

Числа и числовые строки

Если мы хотим удалить из массива все элементы не являющиеся числами или числовыми строками:

$new_arr = array_filter(
    $arr,
    function ($v) {
        return is_numeric($v);
    }
);

PHP-функция is_numeric() проверяет, содержит ли переменная число или числовую строку (документация is_numeric).

В результате в переменной $new_arr получим следующий массив:

Array
(
  [0] => 4
  [3] => "24"
  [5] => "12.54"
  [7] => 0
  [10] => 8.4
)

Только целые числа

Если мы хотим отфильтровать элементы массива строго по типу данных, оставив в нём только те элементы которые являются целыми числами, тогда в callback-функции для проверки значений массива применяем PHP-функцию is_int():

$new_arr = array_filter(
    $arr,
    function ($v) {
        return is_int($v);
    }
);

PHP-функция is_int() проверяет, представляет ли собой переменная целое число (документация is_int).

Теперь в результате в переменной $new_arr мы получим следующий массив:

Array
(
  [0] => 4
  [7] => 0
)

Только числа с плавающей точкой

Для чисел с плавающей точкой берём PHP-функцию is_float():

$new_arr = array_filter(
    $arr,
    function ($v) {
        return is_float($v);
    }
);

PHP-функция is_float() проверяет, представляет ли собой переменная число с плавающей точкой (документация is_int).

В данном случае, в результате в переменной $new_arr мы получим:

Array
(
  [10] => 8.4
)

Целые числа или числа с плавающей точкой

Если мы хотим оставить в массиве все числовые типы (целые числа и числа с плавающей точкой), исключив из него также и числовые строки, то в нашей проверке применим оператор ИЛИ || вместе с функциями is_int и is_float. То есть, сделаем такую проверку значений массива is_int($v) || is_float($v):

$new_arr = array_filter(
    $arr,
    function ($v) {
        return is_int($v) || is_float($v);
    }
);

В данном случае, в переменной $new_arr получим следующий массив:

Array
(
  [0] => 4
  [7] => 0
  [10] => 8.4
)

Перезаписать переменную

Если вы хотите отфильтровать массив в той же переменной где хранится массив, вы можете её просто перезаписать:

$arr = [4, '', 'test', '24', null, '12.54', 'dfg', 0, true, false, 8.4];

$arr = array_filter($arr, function ($v) { return is_numeric($v); });
Генератор случайных чисел кратных заданному значению
Генератор случайных чисел кратных заданному значению Готовое решение для задач в которых необходимо генерировать случайные числа в заданном диапазоне, при этом чтобы эти числа были кратны какому то заданному числу.
Математика в JavaScript
математические функции Сборка арифметических операторов и методов чисел в JavaScript. Всё что связано с математикой в JavaScript с примерами функций и решений, собрано вместе на одной странице.
Проверка на целое число
Проверка на целое число Как в JavaScript проверить является ли число целым или дробью. Метод isInteger для проверки целостности числа. Синтаксис метода isInteger с примерами.
Число в число с пробелами
Число в число с пробелами Как в PHP отформатировать число так, чтобы тысячи разделялись пробелами. То есть, нужно выполнить форматирование числа в формат с пробелами в качестве разделителя тысяч.
Комментарии 0

*** чтобы писать комментарии.