mexykanu Posted August 2, 2016 Posted August 2, 2016 (edited) Hello, Let's say that we have an $array[0][2] which has values on the first column. Could you please tell me how i could add values in the second column of the array, but starting from position 0 - $array[0][2] ? This method should work for any amount of inserted values, i should not insert them manually. I'm currently using the following method, which i don't consider to be elegant; Is there a better / quicker / shorter way to do it ? #Include <Array.au3> Local $BaseArray[0][2] Local $FillArray[2][2] = [["New Item 2 - 1", "New Item 2 - 2"],["New Item 3 - 1", "New Item 3 - 2"]] _ArrayAdd($BaseArray,$FillArray) _ArrayDisplay($BaseArray) Local $FillArray2[3][2] = [["New Item 4 - 1", "New Item 4 - 2"],["New Item 5 - 1", "New Item 5 - 2"],["New Item 6 - 1", "New Item 6 - 2"]] $length = UBound($BaseArray,1) > UBound($FillArray2,1) ? UBound($BaseArray,1) : UBound($FillArray2,1) ReDim $BaseArray[$length][UBound($BaseArray,2)+UBound($FillArray2,2)] for $j = 0 to UBound($FillArray2,2)-1 for $i = 0 to UBound($FillArray2,1)-1 $BaseArray[$i][UBound($BaseArray,2)-2+$j] = $FillArray2[$i][$j] next Next _ArrayDisplay($BaseArray) Thank you. Edited August 2, 2016 by mexykanu
Danyfirex Posted August 2, 2016 Posted August 2, 2016 Hello. Create your own function like this. #include <Array.au3> Local $BaseArray[0][2] Local $FillArray[2][2] = [["New Item 2 - 1", "New Item 2 - 2"], ["New Item 3 - 1", "New Item 3 - 2"]] _ArrayAdd($BaseArray, $FillArray) _ArrayDisplay($BaseArray) Local $FillArray2[2][2] = [["New Item 4 - 1", "New Item 4 - 2"], ["New Item 5 - 1", "New Item 5 - 2"]] _ArrayCombine($BaseArray, $FillArray2) _ArrayDisplay($BaseArray) Func _ArrayCombine(ByRef $array1, ByRef $array2) ; Function to combine 2D arrays in column direction Local $a1 = UBound($array1, 2) Local $a2 = UBound($array2, 1) ReDim $array1[UBound($array1, 1)][UBound($array1, 2) + UBound($array2, 2)] For $i = 0 To $a2 - 1 For $x = $a1 To $a1 + UBound($array2, 2) - 1 $y = $x - $a1 $array1[$i][$x] = $array2[$i][$y] Next Next EndFunc ;==>_ArrayCombine Saludos mexykanu 1 Danysys.com AutoIt... UDFs: VirusTotal API 2.0 UDF - libZPlay UDF - Apps: Guitar Tab Tester - VirusTotal Hash Checker Examples: Text-to-Speech ISpVoice Interface - Get installed applications - Enable/Disable Network connection PrintHookProc - WINTRUST - Mute Microphone Level - Get Connected NetWorks - Create NetWork Connection ShortCut
mexykanu Posted August 2, 2016 Author Posted August 2, 2016 1 hour ago, Danyfirex said: Hello. Create your own function like this. #include <Array.au3> Local $BaseArray[0][2] Local $FillArray[2][2] = [["New Item 2 - 1", "New Item 2 - 2"], ["New Item 3 - 1", "New Item 3 - 2"]] _ArrayAdd($BaseArray, $FillArray) _ArrayDisplay($BaseArray) Local $FillArray2[2][2] = [["New Item 4 - 1", "New Item 4 - 2"], ["New Item 5 - 1", "New Item 5 - 2"]] _ArrayCombine($BaseArray, $FillArray2) _ArrayDisplay($BaseArray) Func _ArrayCombine(ByRef $array1, ByRef $array2) ; Function to combine 2D arrays in column direction Local $a1 = UBound($array1, 2) Local $a2 = UBound($array2, 1) ReDim $array1[UBound($array1, 1)][UBound($array1, 2) + UBound($array2, 2)] For $i = 0 To $a2 - 1 For $x = $a1 To $a1 + UBound($array2, 2) - 1 $y = $x - $a1 $array1[$i][$x] = $array2[$i][$y] Next Next EndFunc ;==>_ArrayCombine Saludos Hello, Thank you, now i've also learned the importance of ByRef. Best Regards, Daniel.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now