I just noticed something. My big array has ten named elements but if I print it:
printf "%-20s %s\n" ${(kv)main} > /dev/pts/2
width 90
window main
offset 0
topE 1
active 1
90 main
bottomE 48
lastE 196
hight 48
196 48
List 1
0 1
list List
1 48
currentE 1
... it all works, however 'elements' 90, 196, 0 and 1 seem to
have created themselves, I didn't make them. They seem to be
ghosts who's names are other element's values, eg: '90' is the
value proper value of 'width' and that element holds the value
'main' which is the proper value of 'window' and so on. It
doesn't seem to break anything, however it's a bit strange when
you print it out. Something unintended in the printf?