在PHP中,您会得到一个由n个元素组成的数组。必须根据元素的奇数或偶数将元素从数组中分离出来。也就是说,在不遍历原始数组或使用任何 环 .
null
例如:
Input : array(2, 5, 6, 3, 0) Output : Odd array: 5 , 3 Even array: 2, 6, 0 Input : $input = array(0, 1, 2, 3, 4, 5) Output : Odd array: 1, 3, 5 Even array: 0, 2, 4
通过遍历数组并分别打印奇偶元素,可以很容易地解决这类问题,但这将占用更多的代码行,也会增加代码循环的开销。因此,为了避免使用循环,我们将尝试使用PHP的一些内置函数。这里我们使用两个PHP数组函数 数组_过滤器() 和 数组_值() 来解决这个问题。
- 数组_filter(): 此函数将用于过滤输入数组中的奇偶元素。
- 数组_值(): 此函数将用于重新索引奇偶数组,因为数组_filter奇偶数组的索引与其在输入数组中的元素相同。
注: array_filter()函数将只过滤奇偶索引元素及其索引值。应用array_filter()函数后,奇数数组的索引为1、3、5,偶数数组的索引为0、2、4。
算法:
- Filter elements :
- filter odd elements by array_filter().
- filter even elements by array_filter().
- Re-index Arrays :
- re-index odd-array by use of array_values().
- re-index even-array by use of array_values().
- Print both of the odd/even array.
下面是上述算法的PHP实现:
<?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 ); ?> |
输出:
Odd array : Array ( [0] => 3 [1] => 5 [2] => 7 ) Even array : Array ( [0] => 4 [1] => 6 [2] => 8 [3] => 2 )
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END