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 elements function oddCmp( $input ) { return ( $input & 1); } // comparator function to filter odd elements function 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 array print "Odd array :
" ; print_r( $odd ); // print even-indexed array print "
Even array :
" ; print_r( $even ); ?> |
Выход :
Нечетный массив: Множество ( [0] => 3 [1] => 5 [2] => 7 ) Четный массив: Множество ( [0] => 4 [1] => 6 [2] => 8 [3] => 2 )