What is wrong in this approach I can't get correct value of array length
#!/bin/bash
foo(){
val=$@
len=${#val[@]}
echo "Array contains: " $val
echo "Array length is: " $len
}
var=(1 2 3)
foo ${var[@]}
Output:
Array contains: 1 2 3
Array length is: 1