PHP | Отделяйте нечетные и четные элементы из массива без использования цикла
В PHP дан массив из n элементов. Вы должны отделить элементы от массива на основе нечетных или четных элементов. То есть печатать нечетный массив и четный массив отдельно, без обхода исходного массива или использования какого-либо цикла.
Примеры:
Вход: массив (2, 5, 6, 3, 0)
Выход: Нечетный массив: 5, 3
Четный массив: 2, 6, 0
Ввод: $ input = array (0, 1, 2, 3, 4, 5)
Выход: Нечетный массив: 1, 3, 5
Четный массив: 0, 2, 4
Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.
Проблемы такого типа можно легко решить, пройдя по массиву и распечатав нечетные и даже нечетные элементы по отдельности, но для этого потребуется больше строк кода, а также накладные расходы на цикл в нашем коде. Итак, чтобы избежать использования цикла, мы попробуем использовать некоторые встроенные функции PHP. Здесь мы используем две функции массива PHP array_filter () и array_values () для решения этой проблемы.
- array_filter (): эта функция будет использоваться для фильтрации нечетных / четных элементов из входного массива.
- array_values (): эта функция будет использоваться для повторного индексирования нечетного и четного массива, поскольку после array_filter нечетный и четный массив имеют тот же индекс, что и их элементы во входном массиве.
Примечание. Функция array_filter () будет фильтровать только нечетные / четные индексированные элементы вместе со значением их индекса. После применения функции array_filter () индекс нечетного массива будет равен 1, 3, 5, а индекс четного массива будет равен 0, 2, 4.
Алгоритм:
- Фильтрующие элементы:
- фильтровать нечетные элементы с помощью array_filter ().
- фильтровать даже элементы с помощью array_filter ().
- Переиндексировать массивы:
- переиндексировать нечетный массив с помощью array_values ().
- переиндексируйте четный массив с помощью array_values ().
- Распечатайте оба массива - нечетный / четный.
Below is the PHP implementation of above algorithm:
<?php // PHP program to separate odd-even indexed// elements of an array // input array $input = array(4, 3, 6, 5, 8, 7, 2); // comparator function to filter odd elementsfunction oddCmp($input){ return ($input & 1);} // comparator function to filter odd elementsfunction evenCmp($input){ return !($input & 1);} // filter odd-index elements$odd = array_filter($input, "oddCmp"); // filter even-index elements$even = array_filter($input, "evenCmp"); // re-index odd array by use of array_values()$odd = array_values(array_filter($odd)); // re-index even array by use of array_values()$even = array_values(array_filter($even)); // print odd-indexed arrayprint"Odd array :
";print_r($odd); // print even-indexed arrayprint"
Even array :
";print_r($even); ?> |
Выход :
Нечетный массив:
Множество
(
[0] => 3
[1] => 5
[2] => 7
)
Четный массив:
Множество
(
[0] => 4
[1] => 6
[2] => 8
[3] => 2
)