仅使用数组函数[on hold]将数组从一个转换为另一个

我想给转换数组:

$myArray = array(1, 2, 3, 4);

至:

array(4, 2, 1, 3);

仅使用数组函数 . 没有索引,没有循环 . 使用纯数组函数,没有别的 . 除此之外,我已经尝试过洗牌了 . 甚至可以做到吗?

回答(2)

2 years ago

我认为以下代码会对您有所帮助 . 我已经测试了这段代码并为我工作 .

<?php
$inputArray = array(1, 2, 3, 4);

function oddNum($input)
{
    return ($input & 1);
}

function evenNum($input)
{
    return !($input & 1);
}

$odd = array_filter($inputArray, "oddNum");
$even = array_filter($inputArray, "evenNum");

asort($odd); // ascending order
arsort($even); // decending order

$finalArray = array_merge($even,$odd);
print_r($finalArray);
?>

谢谢

2 years ago

如果逻辑是偶数元素的DESC顺序,则可以尝试以下方式 .

$myArray = array(1, 2, 3, 4);
$even = $odd = [];
$both = [&$even, &$odd];

array_walk($myArray, function ($item) use ($both){
    $both[$item % 2][] = $item;
});

rsort($even);
sort($odd);
$myArray = array_merge($even, $odd);

print '<pre>';
print_r($myArray);