cancel
Showing results for
Did you mean:
cancel
Showing results for
Did you mean:

Got a minute? We appreciate your feedback:

GDL
About building parametric objects with GDL.

## Length/Size of one of the sub-arrays of a multi-dim array

Enthusiast
Hi
Is there a way to get the length/size of a sub-array of a multi-dimensional array?
```DIM myArray[][]
myArray[1][1] = 500
myArray[1][2] = 510
myArray[2][1] = 600
myArray[2][2] = 610
myArray[2][3] = 620
myArray[3][1] = 700
myArray[3][2] = 710
myArray[3][3] = 720
myArray[3][4] = 730```
VARDIM1(myArray[1]) !gives 4, but I need the size of just myArray[1], which is 2

I tried VARDIM2(myArray[1]) also but it doesn't give the required output.
32 REPLIES 32
Ace
Why VARDIM1(myArray[1])?

Must be VARDIM1(myArray) and VARDIM2(myArray)
Enthusiast
Because I need the size of the sub-array myArray[1] (that is the value 2 in my example) and not the entire parent array myArray
Ace
So, VARDIM1(myArray) will give you 4 and VARDIM2(myArray) will give you 3.

If you just need to find out it is one-dimensional or two dimensional array (i.e. one bracket or two brackets), make some sort of check:

something=1
IF VARDIM2(myArray) THEN something=2

I didn't try it, but hope it will work this way.
Ace
dushyant wrote:
Because I need the size of the sub-array myArray[1] (that is the value 2 in my example) and not the entire parent array myArray
What do you call sub-array? Could you refer to GDL manual page about (and provide AC version)? Because one of us does not understand it correct.
Enthusiast
Podolsky wrote:
So, VARDIM1(myArray) will give you 4 and VARDIM2(myArray) will give you 3.
Yes, but I don't need that.

By sub-array, I mean this array: myArray[1]
For your understanding, other sub-arrays here are: myArray[2], myArray[3]
The main/parent array of these sub-arrays being myArray

myArray[1] is an array having two items: myArray[1][1] and myArray[1][2] , so its size is 2. I want this '2' as the size value of the array myArray[1].

Hope that clarifies it for you Podolsky.
Moderator
Podolsky wrote:
So, VARDIM1(myArray) will give you 4 and VARDIM2(myArray) will give you 3.

Actually in this case it is VARDIM1(myArray) = 3 and VARDIM2(myArray) = 4.

It is simply the dimensional size of your array - 3x4.

I am no expert on arrays, but I think because you have defined ... myArray[3][4] = 730
you have automatically defined all four fields for the second dimension in all 3 of the first dimension fields.

Does that make sense?

So although you have not defined ... myArray [1][3] or myArray [1][4], you have now by default and their values will be zero.

An array can have zero values (values of zero), but it can't have missing values.

Not sure if I have explained that well.

Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
Enthusiast
Barry, so you mean it builds like a matrix of 3x4 cells and assigns 0 to any non-assigned cells?
Booster
Sub-arrays all have the same length. two dimensional array are just tables with n x m cells.
Derived Types
Variables and parameters can also be arrays, and parameters can be value lists of a simple type.

Arrays are one- or two-dimensional tables of numeric and/or string values, which can be accessed directly by indexes.
http://gdl.graphisoft.com/reference-guide/rules-of-gdl-syntax

hth Dominic
AC26 CHE - macOS Ventura M1
Enthusiast
In that case, multi-dim arrays might not be helpful for what I am trying to do. Thanks guys for the help.

Can dictionaries be looped through?

Latest solutions

Most liked posts