Natürlich spielt auch die Reihenfolge der <input>-Felder eine Rolle.
Auf diese Reihenfolge kann man sich aber nie verlassen. Weil der Frontender …
Aber der Enctype darf sie nicht verändern und das ist ganz Wesentlich! Enctype application/x-www-form-urlencoded und multipart/form-data verändern die Reihenfolge nicht.
Der "Frontender" aber schon. Der soll ja ein Design umsetzen - und da gilt "form follows function" nicht in Bezug auf die Programmierung des Backends. Also sendet man nicht "on" sondern vereinbart dass die Checkboxen (um die es hier geht) jeweils einen markanten und sprechenden Value haben und denkt (als "Backender") daran, eben diese Werte vor einer Auswertung, einem Vergleich oder einer Suche (z.B. in_array()) a) zu trimmen und b) mit etwas wie strtolower() zu behandeln um wenigstens solchen Schreibfehlern zu begegnen.
Ich bin auch bei meinem eigenen Zeug kein Freund von solchen Reihenfolgen. Beispiel aus dem PHP-Manual:
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
... und da hätte ich die Reihenfolge selbst in der Hand.
Lieber notiere ich etwas mit Namen:
$sql = 'SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour';
$sth = $dbh -> prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth -> execute(array(':calories' => 150, ':colour' => 'red'));
oder, erst jetzt "gut":
$sql = '
SELECT 
    name, colour, calories
FROM
    fruit
WHERE
        calories < :calories
    AND colour   = :colour';
$stmt = $dbh -> prepare( $sql );
$stmt -> bindParam( ':calories', $calories );
$stmt -> bindParam( ':colour'  , $color    );
$calories = 150;
$color    = 'red';
$stmt -> execute();
Ich fürchte mich nämlich davor, SELBST die Reihenfolge zu verwechseln und dann gegen "esoterischen Bugs" (beatovich) kämpfen zu müssen. Wer das (wie ich) schon mal hatte, der weiß sehr genau, wie garstig diese Käfer täuschen und tricksen damit man sie nicht erkennt. Aus dem Grund bin ich auch ein Freund einer nicht zeilensparenden, maximal übersichtlichen Notation.
Ansonsten bin ich nicht so überzeugt davon, durch den User-Agent Formulardaten in json zu packen und dann abzusenden. Jedenfalls nicht in jedem Fall. Grund: Mehr Code -> mehr Fehler.