Как правильно сделать такой select?
Вообще вы конечно нагородили. Все проще.<select>
    <option value="0" <?=$data['active'] == 0 ? 'selected="true"' : null;?>>Не активен</option>
    <option value="1" <?=$data['active'] == 1 ? 'selected="true"' : null;?>>Активен</option>
</select>
Вопрос концептуальный: зачем это делать селектом, вместо более очевидного checkbox?
А в селектах обычно переключают аттрибут selected, а не извращаются со значениями. Одинаковый порядок следования option - это бонус для использования, а не баг.<option value="1" <?= $data['active'] ? ' selected="selected":'''?>>Активен</option>
<option value="0" <?= !$data['active'] ? ' selected="selected":'''?>>Не активен</option>