Ok, wenn du nur ein Teil der Werte änderst, dann ist das auslesen natürlich nötig. Ich würde aber das array für die übersichtlichere Nutzung anders aufbauen und konkrete Namen für die Indizes vergeben. Mit array_push() bekommst du ja ein array in Form von (0 => 5, 1 => name,...). Besser zu handhaben wäre es denke ich mit (wertx => 5, username => name,...). Heißt also, anstatt array_push packst du dann die Formulardaten ganz normal so rein: testarray['username']=$_POST['loginname']; usw.
Wenn das Feld in der accounts-Tabelle bleibt und von anderen Usern geändert wird, würde ich noch berücksichtigen, dass die Sache dann recht anfällig für den Transferbug sein kann (es gibt hier im Forum irgendwo auch einen Fix, der den zumindest zu vermeiden hilft). Und wenn es drin bleibt, nicht vergessen, das Feld ggf. in der dragon.php zu ergänzen, damit es beim DK nicht wieder auf default gesetzt wird.