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

时间:2015-04-30 09:04:37

标签: php arrays reverse

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

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

?>

5 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:0)

您的方法的问题是当您达到0时,它再次运行并且索引获得-1的值。

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

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

答案 2 :(得分:0)

如何在不使用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];
?>

答案 3 :(得分:0)

这是我从here借用代码并进行更新的另一种方式,这样就不必使用$ 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);

请参见live code

该技术的优点之一是数组$ a被反转了,因此无需创建新数组。

答案 4 :(得分:0)

下面是反转数组的代码,此处的目标是提供最佳解决方案。与上面批准的解决方案相比,我的解决方案仅迭代了一半的时间。虽然是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)

?>