Будьте внимательны, глючит отображение выбранного значения при использовании смешанныx (цифровыx и текстовыx) значений 'options' => [0 => ' ', 'one' => 'first'] - первое значение всегда 'selected', 'options' => ['' => ' ', 'one' => 'first'] - все ок.
6 комментариев
Использование числовых ключей является некорректным, особенно в смешанном варианте. В БД значения хранятся в виде строк и при сравнении с числовым значением выполняется преобразование, делающее результат сравнения отличным от ожидаемого, в случае, если строка не приводится к числу верно.
Поэтому либо использовать строго строковые ключи
Либо только числовые ключи (в этом случае приведение типов и сравнение будет работать корректно)
В остальных случаях результат может получиться обескураживающим, особенно, если не перепроверить корректность выбора таких настроек.
отличный способ ничего не исправлять
Вводить проверку is_int и делать дополнительную ветку сравнения значений и приведения типов - костыль, имхо. Пусть и спасет тех, кто не думает о типизации. Плюс, потенциально сломает в коде, например в том же switch, что может быть в коде.
В json кодируются только массивы. И те, у кого PHP 5.2 всё равно остаются с ошибкой.
а сколько этих с 5.2? я смотрел мировую статистику пол года назад 5.2 использовало 2-3%
честно говоря я вообще не понимаю почему так получается, в коде использована не строгая проверка
т.ч. '0' == 0 - true или я что-то упускаю?