use*_*761 4 php arrays recursion reverse slice
我想使用递归反转索引数组中的值。输出应与array_reverse()相同。
我的代码:
$array = [1,2,3,4,5,6,7];
function reverseString(&$s) {
if(count($s) < 2){
return;
}
$len = count($s);
$temp = $s[0];
$s[0] = $s[$len - 1];
$s[$len - 1] = $temp;
reverseString(array_slice($s, 1, $len - 2));
}
reverseString($array);
print_r($array);
Run Code Online (Sandbox Code Playgroud)
返回:
Array (
[0] => 7
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 1 )
Run Code Online (Sandbox Code Playgroud)
array_slice()是数组部分的链接,对吗?
为什么内部元素没有受到我的递归交换技术的影响?
字符串和数组是两个不同的东西。我稍微澄清了你的算法:
<?php
$array = [1,2,3,4,5,6,7];
function reverseSequence(&$s) {
$len = count($s);
if($len < 2){
return;
}
$rest = array_slice($s, 1, $len - 2);
reverseSequence($rest);
$s = array_merge([$s[$len - 1]], $rest, [$s[0]]);
}
reverseSequence($array);
print_r($array);
Run Code Online (Sandbox Code Playgroud)
?输出显然是:
Array
(
[0] => 7
[1] => 6
[2] => 5
[3] => 4
[4] => 3
[5] => 2
[6] => 1
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |