首页 文章

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

提问于
浏览
-4

我想给转换数组:

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

至:

array(4, 2, 1, 3);

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

2 回答

  • 0

    如果逻辑是偶数元素的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);
    
  • 0

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

    <?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);
    ?>
    

    谢谢

相关问题