secondo me è proprio sbagliato concettualmente.
quel $i in un foreach, come se fosse un normale ciclo for, nn ha molto senso.
secondo me questo dovrebbe essere più giusto:
Codice PHP:
foreach ($tests as $element) {
  if(
is_numeric($element)) {
      echo 
'ok';
  } else {
      echo 
'ko';
  }

non l'ho testato, però in un foreach, in teoria, quell'indicie non ha molto senso.