Re: [asterisk-users] Arrays in Asterisk

2021-12-22 Thread Steve Edwards

On Wed, 22 Dec 2021, Steve Edwards wrote:


same = n, set(ARRAY(foo1,foo2,foo3,foo4)=1,2,3,4)


Just to be clear...

The use of sequential ascending numbers in all of the examples should not 
be construed as having any meaning. You could just as easily have:


same = n, set(ARRAY(foo,bar,baz,boo)=do,wop,be,bop)

--
Thanks in advance,
-
Steve Edwards   sedwa...@sedwards.com  Voice: +1-760-468-3867 PST
https://www.linkedin.com/in/steve-edwards-4244281

--
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
 https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Arrays in Asterisk

2021-12-22 Thread Steve Edwards

On Wed, 22 Dec 2021, Dovid Bender wrote:

I am experimenting with arrays in Asterisk. I am looking 
at https://wiki.asterisk.org/wiki/display/AST/Function_SHIFT 
and https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+Function_ARRAY.


So for example I Do Set(FOO(1,2,3,4)=10,20,30,40)

What would be the correct way to get both the key and value into an 
array? I want to say for instance OPT=1 and then OPT_VAL=10. Then on the 
next interaction for OPT=2 and OPT_VAL=20 etc.


Is this possible or am I looking at this wrong?


In my mind, Asterisk does not really have arrays. You can set channel 
variables and pretend they are an array, but they are not an array like in 
real programming languages -- like 'how many elements are in this array' 
or 'throw an exception if I try to access an invalid subscript' or 
'iterate over every element in this array.'


For example, you can set channel variables like:

same = n, set(foo1=1)
same = n, set(foo2=2)
same = n, set(foo3=3)
same = n, set(foo4=4)

or

same = n, set(ARRAY(foo1,foo2,foo3,foo4)=1,2,3,4)

or

same = n, mset(foo1=1,foo2=2,foo3=3,foo4=4)

and 'dumpchan()' will show 4 discrete variables that have the same 3 
letters and no other relationship.


(You could also 'set(ARRAY(foo1,bar2,baz3,boo4)=1,2,3,4)' to see that 
there is no difference from setting channel variables as discrete 'set()' 
statements or using the 'ARRAY()' function or using the 'mset()' 
application)


You can 'pretend' a variable is an array by concatenating a 'subscript' 
like:


same = n, set(foo${key}=value)

or

same = n, set(foo-${key}=value) ; a little bit more readable

but 'dumpchan()' will show each 'element' as a discrete channel variable.

Note that 'key' does not need to be numeric. It is just text that is 
concatenated to form the channel variable name. This may be used to 
pretend that Asterisk has associative arrays.


The 'SHIFT()' function just removes and returns the leading substring of a 
variable up to a delimiter. It has even less to do with arrays than 
'ARRAY()' :)


--
Thanks in advance,
-
Steve Edwards   sedwa...@sedwards.com  Voice: +1-760-468-3867 PST
https://www.linkedin.com/in/steve-edwards-4244281-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

[asterisk-users] Arrays in Asterisk

2021-12-22 Thread Dovid Bender
Hi,

I am experimenting with arrays in Asterisk. I am looking at
https://wiki.asterisk.org/wiki/display/AST/Function_SHIFT and
https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+Function_ARRAY.

So for example I Do Set(FOO(1,2,3,4)=10,20,30,40)

What would be the correct way to get both the key and value into an array?
I want to say for instance OPT=1 and then OPT_VAL=10. Then on the next
interaction for OPT=2 and OPT_VAL=20 etc.

Is this possible or am I looking at this wrong?
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
  https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users