按索引偶数或奇数将数组拆分为两个数组
我有这个数组:
$array = array(a, b, c, d, e, f, g);
我想根据索引是偶数还是奇数将其拆分为两个数组,如下所示:
$odd = array(a, c, e, g);
$even = array(b, d, f);
提前致谢!
我有这个数组:
$array = array(a, b, c, d, e, f, g);
我想根据索引是偶数还是奇数将其拆分为两个数组,如下所示:
$odd = array(a, c, e, g);
$even = array(b, d, f);
提前致谢!
一个解决方案,使用匿名函数和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;
}
}
使用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);