Alternative (without loop):
grep -o hello <<< ${myarr[*]} | wc -l
Don't get tempted to change it to grep -oc hello. It counts the number of lines that contain hello. So, if some line contains more than 1 instances of the word, it will still be counted as 1.
Alternately, this would work too:
printf '%s\n' ${myarr[*]} | grep -cFx hello
The lack of quotes around ${myarr[*]} tokenizes it and printf will then print the words on separate lines. Then grep -c will count those.
Note:
The first approach will count a single word hello_some_string_here_hello as 2 instances of hello.
The second approach will count them as zero instances (match whole line with -x)