That is because the when you insert the data into the PLSQL table, there has to be an order of sequence..

Code:
  v_count := 0;               -- Remember to decaler v_count NUMBER (20) := 0;
  FOR i IN c1 LOOP
     v_count := v_count + 1;
     p_phone_type_id(v_count) := i.phone_type_id; 
  END LOOP;
Sam