点击蓝字关注我们!每天获取最新的编程小知识!
源 / php中文网 源 / www.php.cn
PHP如何在不使用循环的情况下将奇数和偶数元素与数组分开?
(查看原文请点击本文末尾左下角:
在PHP中,您将获得n个元素的数组。您必须根据元素奇数或偶数将元素与数组分开。也就是说,分别打印奇数数组和偶数数组而不遍历原始数组或使用任何循环。
例子:
输入:
array
(2, 5, 6, 3, 0)
输出: 奇数
array
: 5 , 3
偶数
array
: 2, 6, 0
输入:
$input
=
array
(0, 1, 2, 3, 4, 5)
输出: 奇数
array
: 1, 3, 5
偶数
array
: 0, 2, 4
通过遍历数组并打印奇数甚至单独的元素可以很容易地解决这些类型的问题,但这会占用更多的代码行,并且代码中也会出现循环开销。因此,为了避免使用循环,我们将尝试使用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()重新索引偶数数组。
打印奇数/偶数数组。
以下是上述算法的PHP实现:
$input
=
array
(4, 3, 6, 5, 8, 7, 2);
function
oddCmp(
$input
)
{
return
(
$input
& 1);
}
function
evenCmp(
$input
)
{
return
!(
$input
& 1);
}
$odd
=
array_filter
(
$input
,
"oddCmp"
);
$even
=
array_filter
(
$input
,
"evenCmp"
);
$odd
=
array_values
(
array_filter
(
$odd
));
$even
=
array_values
(
array_filter
(
$even
));
print
"奇数数组:\n"
;
print_r(
$odd
);
print
"偶数数组:\n"
;
print_r(
$even
);
?>
-END-
声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!