我想知道如何在不使用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);
}
?>
发布于 2015-04-30 17:06:37
<?php
$array = array(1, 2, 3, 4);
$size = sizeof($array);
for($i=$size-1; $i>=0; $i--){
echo $array[$i];
}
?>
发布于 2019-05-24 07:31:02
下面是反转数组的代码,这里的目标是提供一个最优的解决方案。与上面批准的解决方案相比,我的解决方案只迭代了半个长度的时间。虽然它是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)
?>
发布于 2019-03-04 16:05:23
下面是我从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是在适当位置颠倒的,因此不需要创建新的数组。
下面改进了代码,使用户不需要向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);
请参阅here
注意:此版本适用于PHP 7.2-7.4.2
https://stackoverflow.com/questions/29963464
复制相似问题