Что нового

Присвоение массива массиву

nowost

Знающий
Сообщения
178
Репутация
17
Прошу помочь с оптимизацией кода

Код:
$d=StringSplit($c[0],",")
 For $i=1 To UBound($d) - 1
	$Array1[$i-1]=$d[$i]
			next

$d=StringSplit($c[1],",")
 For $i=1 To UBound($d) - 1
 	$Array2[$i-1]=$d[$i]
 			next
......

$d=StringSplit($c[29],",")
 For $i=1 To UBound($d) - 1
 	$Array30[$i-1]=$d[$i]
 			next

Есть большой массив $c, присваиваю его значения другим массивам, все бы ничего но но у меня получается около 30 записей. Не хочется одно и тоже писать 30 раз
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
nowost
Как вариант.
Код:
#include <Array.au3>

Local $aFirst[5] = ['1,2,3,4', '2,3,4,5', '3,4,5,6,7', '4,5,6,7,8,9', '5,6,7,8,9,0'], $aSecond[1], $i_Ub

$i_Ub = UBound($aFirst)
ReDim $aSecond[$i_Ub + 1]
For $i = 0 To $i_Ub - 1
    $aSecond[$i] = StringSplit($aFirst[$i], ',', 2)
Next
;~ ...
For $i = 0 To UBound($aSecond) - 1
    _ArrayDisplay($aSecond[$i])
Next
Или, если строковые данные уже не нужны:
Код:
#include <Array.au3>

Local $aFirst[5] = ['1,2,3,4', '2,3,4,5', '3,4,5,6,7', '4,5,6,7,8,9', '5,6,7,8,9,0']

For $i = 0 To UBound($aFirst) - 1
	$aFirst[$i] = StringSplit($aFirst[$i], ',', 2)
Next
;~ ...
For $i = 0 To UBound($aFirst) - 1
	_ArrayDisplay($aFirst[$i])
Next
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
nowost [?]
Не хочется одно и тоже писать 30 раз
И не нужно. Вы всегда можете получить доступ к любому элементу в одну строку
Код:
Dim $c[] = ["1,2,3","4,5,6","7,8,9"]
ConsoleWrite( StringSplit($c[2], ",", 2)[1] & @CRLF) ; 8


Но если вам очень надо 30 массивов, то можно так
Код:
#include <Array.au3>

Dim $c[] = ["1,2,3","4,5,6","7,8,9"]

For $i = 0 To UBound($c) - 1
  Assign("Array" & $i + 1, StringSplit($c[$i], ",", 2))
Next

For $i = 0 To UBound($c) - 1
  _ArrayDisplay(Eval("Array" & $i + 1))
Next
ConsoleWrite(Eval("Array3")[1] & @CRLF) ; 8
 
Автор
N

nowost

Знающий
Сообщения
178
Репутация
17
Спасибо, большое. В итоге сделал так
названия всех массивов записал в массив $master.
Код:
;==>$c
For $i = 0 To UBound($c) - 1
	$tmp=$master[$i]
  Assign($tmp , StringSplit($c[$i], ",", 2))
Next
_ArrayDisplay($Array1)
 
Верх