xwt620 发表于 2011-11-1 22:53:45

如何让数组只记录最近的5次数据【已解决】

本帖最后由 xwt620 于 2011-11-1 23:48 编辑

RT,到记录第六次数据时,把第一次数据抛弃,并重新排序

描述的不太清楚话,请看下面结果
第1次$aArr = {1,0,0,0,0}
第2次$aArr = {1,2,0,0,0}
第3次$aArr = {1,2,3,0,0}
第4次$aArr = {1,2,3,4,0}
第5次$aArr = {1,2,3,4,5}
第6次时$aArr = {2,3,4,5,6}
第7次时$aArr = {3,4,5,6,7}

有点类似记录最近打开的文件一样。

happytc 发表于 2011-11-1 23:07:56

要求有点不明:就是怎么知道现在更新在那个数组元素?你给的例子,用是否值为0来判断吗?

也就是怎么知道是第1次,第二次……

xwt620 发表于 2011-11-1 23:14:07

回复 2# happytc


    其实我觉得用空值表示也是可以的,这个也不是用于记录最近文件,所以在开始定义数组时也不一定就直接赋值了

happytc 发表于 2011-11-1 23:25:43

回复happytc


    其实我觉得用空值表示也是可以的,这个也不是用于记录最近文件,所以在开始定义数 ...
xwt620 发表于 2011-11-1 23:14 http://www.autoitx.com/images/common/back.gif

你在脚本里,用个计数器计录下前面5次更新到那里了就可以了。
前1-5次,你直接赋值:$aArr[$Counter - 1] = $Value

当第6次时,用下面的

#include <Array.au3>

Local $aArr =


_ChangeArray(8, $aArr)
_ArrayDisplay($aArr)

Func _ChangeArray($Value, ByRef $aArr)
        For $i = 0 To UBound($aArr) - 1
                If $i = UBound($aArr) - 1 Then
                        $aArr[$i] = $Value
                        Return
                Else
                        $aArr[$i] = $aArr[$i + 1]
                EndIf
        Next
EndFunc

xwt620 发表于 2011-11-1 23:30:06

回复 4# happytc


    呵呵,谢谢。刚才脑袋瓜子有点蒙,半天转不过弯。休息一下后自己也想到一个思路#include <Array.au3>

Global $aArr

For $i = 1 To 10
        If $i <=5 Then
                $aArr[$i]=$i
                $aArr = $aArr + $aArr[$i]
        Else
                $aArr = $aArr - $aArr
                _ArrayDelete($aArr, 1)
                _ArrayAdd($aArr,$i)
                $aArr = $aArr + $aArr
        EndIf
       
Next
_ArrayDisplay($aArr)
               

my788522 发表于 2011-11-2 13:09:17

_ArrayPush(ByRef $avArray, $vValue [, $iDirection = 0])
页: [1]
查看完整版本: 如何让数组只记录最近的5次数据【已解决】