【问题标题】:How can I push the first element of array, reverse the array, & push reversed array using PHP?如何使用 PHP 推送数组的第一个元素、反转数组和推送反转数组?
【发布时间】:2019-09-24 21:24:45
【问题描述】:

所以我正在尝试学习 PHP,但找不到合适的函数。

我目前正在尝试反转给定的数组: $array = ['a', 'b', 'c', 'd', 'e'];

我的目标是推送一个元素,反转数组,然后推送另一个元素,直到它达到数组的长度。 所以第一次迭代: aedcb 第二次迭代:aebcd 第三次迭代:aebdc 谁能推荐我可以查找并通读以实现此目的的php函数? 这是我当前的代码,我知道有一种方法可以创建一个函数、循环遍历数组、过滤和推送,但是我无法获取正确的 php 函数并创建一个反向函数

这是我目前所拥有的:

<?php 
$array = ['a', 'b', 'c', 'd', 'e'];
// aedcb
// aebcd
// aebdc

$reversedArray = [];

array_push($reversedArray, $array[0]);

$rev = array_reverse($array);

array_push($reversedArray, $rev[0]);

 $rev2 = array_reverse($rev);

 array_push($reversedArray, $rev2[1]);

 $rev3 = array_reverse($rev2);
 array_push($reversedArray, $rev3[1]);

 $rev4 = array_reverse($rev3);

array_push($reversedArray, $rev4[2]);

?> 

打印出我的最终目标。但是,如果给定一个数组或包含比我当前数组更多的项目的对象,这肯定不起作用。

【问题讨论】:

  • 第一次迭代后的结果应该是aebdc还是aedcb
  • 给定的答案有helpful吗?

标签: php arrays function loops reverse


【解决方案1】:

您实际上根本不需要反转数组。只需在开始和结束之间交替删除项目即可。

$array = ['a', 'b', 'c', 'd', 'e'];

$result = [];
$takeFromBeginning = true;
while(count($array))
{
    if($takeFromBeginning) {
        $result[] = array_shift($array);
    } else {
        $result[] = array_pop($array);
    }

    $takeFromBeginning = !$takeFromBeginning;
}

print_r($result);

【讨论】:

    【解决方案2】:

    如果$array = ['a', 'b', 'c', 'd', 'e']; 的结果应该是aebdc,您可以使用带有modulo % 运算符的循环并从左侧或右侧索引到$array

    例如:

    $array = ['a', 'b', 'c', 'd', 'e'];
    
    function customReverse($array) {
        $reversedArray = [];
        $count = count($array);
        for ($i = 0; $i < count($array); $i++) {
            $reversedArray[] = $i % 2 === 0 ? $array[$i / 2] : $array[$count - ($i / 2)];
        }
        return $reversedArray;
    }
    
    print_r(customReverse($array));
    

    输出

    Array
    (
        [0] => a
        [1] => e
        [2] => b
        [3] => d
        [4] => c
    )
    

    Php demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-11
      • 2014-04-16
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多