Assign user input to already declared array

What I am doing is creating a top menu, which a user will select a choice with a number entry. That number corresponds to a string in an array. I then want to assign that response to another array I've already declared.

For example:

#!/bin/bash
colors=(red blue yellow)
red=(cherry fire)
blue=(baby sky)
yellow=(canary banana)

echo "Choose a color: 0) Red, 1) blue, 2) Yellow"
read choice

************
From there, the user will enter 1, 2 or 3. How do I then assign the value of say colors[2] to my array $yellow that I have already declared?

I'm sure this is easy, but I cannot figure this out. And yes, I'm new to scripting.

BASH is a string language with weak types, so copying an entire array around like that means having to handle it as a string.

There is an operator to turn an array into one string: "${ARR[]}" But how're you going to do that when all you have is the name of the array, not the array itself? "${!ARR[]}" doesn't work, the precedence is wrong, and you can't put the [*] outside it to do it backwards. You could shove it all into an eval, which can accomplish any weird syntax you want, but would be difficult. And then you have to turn it back into an array, wrapping it in another layer of stuff.

It's easy to turn a string into an array, though, and BASH has the ! operator to turn a variable name into a variable string. So why not keep your data as strings for easy retrieval?

#!/bin/bash

# Not arrays -- just strings.  Split them later.
colors="red blue yellow"
red="cherry fire"
blue="baby sky"
yellow="canary banana"

# This variable is used to read other variables.
name="colors"

while [ ! -z "${!name}" ]
do
        # Fill an array with variable name stored in 'name'.
        # i.e. When it's 'colors', it gets filled with ( red blue yellow )
        ARR=( ${!name} )
        echo "Choose a color counting from 0: ${ARR[*]}"
        read choice
        name="${ARR[$choice]}"
done

Yes, that is much easier and will work. Thanks!