PHP |不使用循环从数组中分离奇偶元素

在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。

算法:

  1. Filter elements :
    • filter odd elements by array_filter().
    • filter even elements by array_filter().
  2. Re-index Arrays :
    • re-index odd-array by use of array_values().
    • re-index even-array by use of array_values().
  3. 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
喜欢就支持一下吧
点赞13 分享