首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不使用数组反转方法的情况下在php中反转数组

如何在不使用数组反转方法的情况下在php中反转数组
EN

Stack Overflow用户
提问于 2015-04-30 17:04:37
回答 3查看 20.8K关注 0票数 11

我想知道如何在不使用array_reverse方法的情况下反转数组。我有一个称为反转数组的数组,这是我想要反转的数组。我的代码如下。有人能指出我做错了什么吗,因为我在其他地方找不到任何以这种方式颠倒数组的例子。我的代码如下。

代码语言:javascript
复制
<?php

//Task 21 reverse array

$reverseArray = array(1, 2, 3, 4);
$tmpArray = array();
$arraySize = sizeof($reverseArray);

for($i<arraySize; $i=0; $i--){
    echo $reverseArray($i);
}

?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-30 17:06:37

代码语言:javascript
复制
<?php
  $array = array(1, 2, 3, 4);
  $size = sizeof($array);

  for($i=$size-1; $i>=0; $i--){
      echo $array[$i];
  }
?>
票数 15
EN

Stack Overflow用户

发布于 2019-05-24 07:31:02

下面是反转数组的代码,这里的目标是提供一个最优的解决方案。与上面批准的解决方案相比,我的解决方案只迭代了半个长度的时间。虽然它是O(n)次。在处理大型数组时,它可以使解决方案更快一些。

代码语言:javascript
复制
<?php
  $ar = [34, 54, 92, 453];
  $len=count($ar);
  for($i=0;$i<$len/2;$i++){

    $temp = $ar[$i];
    $ar[$i] = $ar[$len-$i-1];
    $ar[$len-$i-1] = $temp;
  }

  print_r($ar)

?>
票数 1
EN

Stack Overflow用户

发布于 2019-03-04 16:05:23

下面是我从here借用代码并更新它的另一种方法,这样我就不必使用$temp变量,而是利用数组解构,如下所示:

代码语言:javascript
复制
<?php
/* Function to reverse  
$arr from start to end*/
function reverseArray(&$arr, $start,  
                       $end) 
{ 
    while ($start < $end) 
    { 
        [$arr[$start],$arr[$end]] = [$arr[$end],$arr[$start]];

        $start++; 
        $end--; 
    }  
}      

$a = [1,2,3,4];
reverseArray($a,0,count($a)-1);
print_r($a);

请参阅live code

这种技术的一个优点是,数组$a是在适当位置颠倒的,因此不需要创建新的数组。

下面改进了代码,使用户不需要向reverseArray();传递多个参数,并指示没有返回值:

代码语言:javascript
复制
/* Function to reverse  
$arr from start to end*/
function reverseArray(&$arr, $start=0): void 
{ 
    $end = count($arr)-1;
    while ($start < $end) 
    { 
        [$arr[$start],$arr[$end]] = [$arr[$end],$arr[$start]];

        $start++; 
        $end--; 
    }  
}      

$a = [1,2,3,4];
reverseArray($a);
print_r($a);

请参阅here

注意:此版本适用于PHP 7.2-7.4.2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29963464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档