按索引偶数或奇数将数组拆分为两个数组

2022-08-30 19:27:02

我有这个数组:

$array = array(a, b, c, d, e, f, g);

我想根据索引是偶数还是奇数将其拆分为两个数组,如下所示:

$odd = array(a, c, e, g);

$even = array(b, d, f);

提前致谢!


答案 1

一个解决方案,使用匿名函数和array_walk

$odd = array();
$even = array();
$both = array(&$even, &$odd);
array_walk($array, function($v, $k) use ($both) { $both[$k % 2][] = $v; });

这只需在数组中传递一次即可分隔项目,但它有点“聪明”的一面。它并不比经典的更好,更冗长

$odd = array();
$even = array();
foreach ($array as $k => $v) {
    if ($k % 2 == 0) {
        $even[] = $v;
    }
    else {
        $odd[] = $v;
    }
}

答案 2

使用array_filter (PHP >= 5.6):

$odd = array_filter($array, function ($input) {return $input & 1;}, ARRAY_FILTER_USE_KEY);
$even = array_filter($array, function ($input) {return !($input & 1);}, ARRAY_FILTER_USE_KEY);