如何在PHP中反转数组而不使用数组反转方法

11

我想知道如何在不使用array_reverse方法的情况下翻转一个数组。我有一个名为“reverse array”的数组,这是我想要翻转的数组。我的代码如下。请问有人能指出我做错了什么吗?因为我找不到任何其他地方用这种方式翻转数组的例子。我的代码如下。

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

?>
6个回答

15
<?php
  $array = array(1, 2, 3, 4);
  $size = sizeof($array);

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

1
如果我必须将反向数组存储在 $array 中呢? - Nishant Nair

1
以下是反转数组的代码,目标是提供最佳解决方案。与上面批准的解决方案相比,我的解决方案只迭代了一半的长度。虽然它的时间复杂度是O(n),但在处理大型数组时可以使解决方案更快。
<?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)

?>

0
你的方法存在问题,当你达到0时,它会再运行一次,索引值变成了-1
$reverseArray = array(1, 2, 3, 4);
$arraySize = sizeof($reverseArray);

for($i=$arraySize-1; $i>=0; $i--){
    echo $reverseArray[$i];
}

0

这里有另一种方法,我从这里借用代码并进行更新,以便消除使用$temp变量的需要,而是利用数组解构,如下所示:

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

查看实时代码

这种技术的优点之一是数组$a在原地反转,因此不需要创建新数组。

以下改进了代码,使得无需传递多个参数给reverseArray(); 同时指示没有返回值:

/* 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);

请点击这里

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


@Deadpool:如果您点击我提供的“实时代码”链接,您会注意到此代码在PHP 7.1+中运行得非常好。鉴于较低版本的PHP 5.4.0-7.0.33不支持数组解构功能,因此结果当然会产生解析错误,而不是致命错误消息。对于其他较低版本的PHP 5和PHP 4,这种结果通常也是正确的。 - slevy1 11分钟前 删除 - slevy1

0

在php中反转一个数组,不使用任何函数或数组反转方法

<?php
  $array = [11,22,32,42,52,62,71];
   $count = sizeof($array);
   for($i = $count -1;$i >=0;$i--){
     $data[] = $array[$i];
   }
   
   print_r($data);
  
?> 

-2

如何在PHP中不使用任何预定义函数反转数组.. 我有一个解决方案... 这是我的解决方案........

<?php
// normal array --------
$myarray = [1,2,3,4,5,6,7,8,9];
//----------------
    $arr = [];
    for($i=9; $i > -1; $i--){

        if(!$i==0){

            $arr[]= $i;
        }   
    }
    print_r($arr);



//the out put is [9,8,7,6,5,4,3,2,1];
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接