如何在不使用数组反转方法的情况下反转 php 中的数组
How to reverse an array in php WITHOUT using the array reverse method
我想知道如何在不使用 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);
}
?>
<?php
$array = array(1, 2, 3, 4);
$size = sizeof($array);
for($i=$size-1; $i>=0; $i--){
echo $array[$i];
}
?>
你的方法的问题是当你到达 0 时,它再次运行并且索引得到 -1
的值。
$reverseArray = array(1, 2, 3, 4);
$arraySize = sizeof($reverseArray);
for($i=$arraySize-1; $i>=0; $i--){
echo $reverseArray[$i];
}
如何在不使用 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];
?>
这是我从 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);
此技术的优点之一是数组 $a 原地反转,因此无需创建新数组。
以下改进了代码,因此不需要将多个参数传递给 reverseArray();以及表明没有 return 值:
/* 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
下面是反转数组的代码,这里的目标是提供一个最优解。与上面认可的解决方案相比,我的解决方案只迭代了一半的时间。虽然是 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)
?>
我想知道如何在不使用 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);
}
?>
<?php
$array = array(1, 2, 3, 4);
$size = sizeof($array);
for($i=$size-1; $i>=0; $i--){
echo $array[$i];
}
?>
你的方法的问题是当你到达 0 时,它再次运行并且索引得到 -1
的值。
$reverseArray = array(1, 2, 3, 4); $arraySize = sizeof($reverseArray); for($i=$arraySize-1; $i>=0; $i--){ echo $reverseArray[$i]; }
如何在不使用 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];
?>
这是我从 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);
此技术的优点之一是数组 $a 原地反转,因此无需创建新数组。
以下改进了代码,因此不需要将多个参数传递给 reverseArray();以及表明没有 return 值:
/* 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
下面是反转数组的代码,这里的目标是提供一个最优解。与上面认可的解决方案相比,我的解决方案只迭代了一半的时间。虽然是 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)
?>