Bei der Konzeption von SoSci Survey wurde der Code 0 im Datensatz weitestgehen vermieden - also auch bei Schiebereglern (da ist 0% im Datensatz eine 1) und Skalen. Einige Ausnahmen gibt es allerdings.
Hinter dieser Entscheidung steht die Überlegung, dass nicht alle Programme ganz sauber zwischen "kein Inhalt" und "0" unterscheiden ... darunter auch PHP selbst, wenn man nicht explizit in numerische Werte umwandelt und ===
statt ==
verwendet. Zur Demonstration:
if (0 == (int)'') {
html('<p>Dieser Test zeigt ein Problem.</p>');
}
Bei der Kodierung ab 1 ist das Risiko für solche Probleme deutlich geringer. Zugleich hat eine 1/2-Kodierung objektiv betrachtet keine Nachteile gegenüber einer 0/1-Kodierung. Im schlimmsten Fall muss man 1 subtrahieren.