#include <Array.au3>
Local $aArray[50]
For $i = 0 To 50 - 1
$aArray[$i] = '//link-' & $i + 1 & '.xxx'
Next
;Задали массив
For $i In $aArray; перебираем массив, здесь в цикле For создаётся новая переменная $i и она получает каждый элемент массива $aArray по очереди.
ConsoleWrite("http:" & $i & @CRLF); здесь мы выводим в консоль, желаемое
; переменная $i, не привязана к массиву, это просто новая пемеменная в которую было извлечено, одно значение из массива.
; при каждом новом цикле, эта переменная обновляется.
$i = "http:" & $i; здесь в переменную $i записывается, то, что нужно, но это не зависывается в сам массив $aArray
Next
_ArrayDisplay($aArray, 'Пример1'); поэтому массив $aArray, остался прежним, в цикле он не был перезаписан. Это была работа в пустую
; если есть желание использовать In в цикле For, то необходимо использовать индексы массива, например так:
Local $aArr = $aArray; создаём новый массив из старого, чтобы первый оказался не тронутым. Нужно для следующего примера. В этом примере работаем с $aArr
Local $i = 0; первый индекс массива, задаётся вне цикла
For $var In $aArr; перебираем массив, $var получает каждый элемент массива по очереди, в каждом новом цикле
$aArr[$i] = "http:" & $var; обновляем ячейку массива с индексом $i
$i += 1; увеличиваем индекс массива на единицу
Next
_ArrayDisplay($aArr, 'Пример2'); показываем обновлённый массив
; Но это не самое простое решение. In в цикле For используется в специфических решениях,
; когда можно перебрать элементы, но нет необходимости использовать номера их индексов
; В большинстве же случаев, наиболее простым решением будет следующее:
For $i = 0 To UBound($aArray) - 1
$aArray[$i] = "http:" & $aArray[$i]; можно так, если точно известно, что все элементы массива, являются //link-n.xxx, иначе, это будет неправильным решением
Next
_ArrayDisplay($aArray, 'Пример3')
; существует ещё одно рещение, бывает, что в первом элементе массива, записано количество рабочих элементов, тогда пример может выглядеть следующим образом
Local $sData = '//link-1.xxx|//link-2.xxx|//link-3.xxx|//link-4.xxx|//link-5.xxx|//link-6.xxx|//link-7.xxx|//link-8.xxx|//link-9.xxx'; готовим для нового массива
Local $aArray = StringSplit($sData, '|'); создаём массив из строки
For $i = 1 To $aArray[0]; это единственное отличие, от предыдущего примера. Указываем размер цикла из первого элемента массива
$aArray[$i] = "http:" & $aArray[$i]; подобно предыдущему примеру
Next
_ArrayDisplay($aArray, 'Пример4')
; Если есть необходимость удалить первый элемент массива и получить чистый набор рабочих элементов. По аналогии с предыдущим примером:
Local $sData = '//link-1.xxx|//link-2.xxx|//link-3.xxx|//link-4.xxx|//link-5.xxx|//link-6.xxx|//link-7.xxx|//link-8.xxx|//link-9.xxx'
Local $aArray = StringSplit($sData, '|')
For $i = 0 To $aArray[0]-1; здесь уже отсчёт от нулевого индекса, так как в него будем записывать
$aArray[$i] = "http:" & $aArray[$i+1]; просто переносим следующую ячейку в текущую, и записываем её с новым значением
Next
ReDim $aArray[UBound($aArray)-1]; Уменьшаем размер массива. Эту строку можно закомментировать, чтобы увидеть её необходимость.
_ArrayDisplay($aArray, 'Пример5')
; Равнозначный вариант, предыдущего примера, это на любителя:
Local $sData = '//link-1.xxx|//link-2.xxx|//link-3.xxx|//link-4.xxx|//link-5.xxx|//link-6.xxx|//link-7.xxx|//link-8.xxx|//link-9.xxx'
Local $aArray = StringSplit($sData, '|')
For $i = 1 To $aArray[0]; здесь уже отсчёт от первого индекса
$aArray[$i-1] = "http:" & $aArray[$i]; переносим текущую ячейку в предыдущую, и записываем её с новым значением
Next
ReDim $aArray[UBound($aArray)-1];
_ArrayDisplay($aArray, 'Пример6')