Показать полную графическую версию : [решено] Редактирование многомерных массивов
Реально ли каким-нибудь образом удалять, к примеру, из 2-мерных массивов элементы 2-й размерности? (т.е. не строку целиком, как это предполагает _arrayDelete(), а только ячейку)?
Пока у меня в голове только один вариант - перегоняем нужную строку в отдельный массив, вырезаем эл-т, переписываем обратно поверх (из-под нового массива будет торчать 'хвост' из одного эл-та от старого - в него запишем пустую строку)
Нет ли возможности сделать тоже самое в меньше кол-во действий?
madmasles
16-05-2011, 02:59
Freez,
Если я Вас правильно понял:#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) <Array.au3>
Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aArray[6][2] = [[5],[1, 2],['3', 4],[5, '6'],[7, 8],['9', '10']]
_ArrayDisplay (http://dundats.mvps.org/help/html/libfunctions/_arraydisplay.htm)($aArray, 'До')
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aArray[0][0]
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) Mod (http://www.autoitscript.com/autoit3/docs/functions/Mod.htm)($i, 2) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$aArray[$i][1] = ''
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
_ArrayDisplay (http://dundats.mvps.org/help/html/libfunctions/_arraydisplay.htm)($aArray, 'После')
madmasles, не, для Freez как я понял нужно просто сдвинуть вторую колонку вверх удалив к примеру 5 строку во второй колонке.
Freez, похоже как ты пишешь просто перегонять. И мне кажется любая функция занимается перегоном, просто она этого не показывает, иначе как ты себе представляешь удаление? Это же не горшок из центра выдернуть, как в кино.
Вот из UDF, и есть перегон
For $i = $iElement To $iUBound - 1
$avArray[$i] = $avArray[$i + 1]
Next
AZJIO, Спасибо, самое логичное решение )
я вчера, видать, переутомился
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.