mexykanu Posted August 2, 2016 Share 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 Link to comment Share on other sites More sharing options...
Danyfirex Posted August 2, 2016 Share 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 Link to comment Share on other sites More sharing options...
mexykanu Posted August 2, 2016 Author Share 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. Link to comment Share on other sites More sharing options...
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