我的代码循环;在每个循环中我需要使用一个数组,删除一些或所有值,然后将数组重置为其原始状态,然后继续下一个循环。例如:
$myArray[5] = [1, 2, 3, 4, 5]
_ArrayDelete($myArray, $i) ; Delete at the specified index
此周期运行后,我需要再次设置$myArray[5] = [1, 2, 3, 4, 5]
。还有另一种方法(不使用_ArrayAdd()
)吗?
答案 0 :(得分:1)
您可以使arrayDelete函数返回更改的数组副本,而不是修改原始数组本身。 一旦你这样做,你可以使用这样的东西:
$tempArray = arrayDelete($myArray, $i);
// do stuff with $tempArray
// $myArray is not changed
在您的情况下是否可行,或者如何在arrayDelete中实现此功能,如果没有更多信息,则无法说明。
答案 1 :(得分:1)
在函数中使用局部变量范围:
#include <array.au3>
Global $myArray[5] = [1, 2, 3, 4, 5]
For $i = 1 To 1000
cycle($myArray)
Next
Func cycle($myArray) ; $myArray is a local copy inside the function
_ArrayDisplay($myArray) ; to prove, it's the original
_ArrayDelete($myArray,2) ; delete something
_ArrayDisplay($myArray) ; to prove, it's altered
EndFunc ;==>cycle
这就是我的建议:使用(本地)副本。
答案 2 :(得分:1)
避免redim惩罚,只提取你需要的东西
#include<array.au3>
local $myArray[5] = [1, 2, 3, 4, 5]
for $i = 0 to 4
_ArrayDisplay(_ArrayExtract($myArray , $i))
If $i = 4 Then $i = -1
next