Array not working as intended?

the biggest I need val is 2 bytes, would adding a delay after the first read make a difference?

So something like

if (Serial.available() > 0)
  {    
    for (int i = 0; i < Serial.available(); i++)
    {
      val[i] = Serial.read();
      delay(30);
    }
  }