You are doing 2 levels of dereferencing in the foreach loop.
If you just printed $x you would get 1, 3, 5, 7 and 9.
list_odd[1] is 3 (given a 0-base index) - the first number you see printed
list_odd[3] is 7 - the 2nd number printed
list_odd[5] is beyond the array bounds and so doesn't happen
Pencil and paper can go a long way in designing things as well as testing the underlying logic.
Susan