У меня есть данные, хранящиеся в SQL как целое число от 0 до 63, т.е. шесть битов IE.
Я пытаюсь выполнить (или нет) 6 простых операторов на основе соответствующих битовых значений.
Я хочу знать, какой метод является наиболее эффективным, или, возможно, если я делаю свою жизнь намного сложнее, чем она должна быть (что я подозреваю, правда).
Метод 1:
Цикл, работающий от самого маленького до самого большого. Разделите целое число на 2, если не целое число, то вычтите .5 и первый бит верен. Повторяйте до тех пор, пока значение не станет равным нулю.
Метод 2:
Преобразование в двоичный код, заполнение начальными нулями, затем чтение каждого символа выходной строки. (множество функций и преобразований типов.)
$bit = str_pad(decbin($row['utilities']),6,"0", STR_PAD_LEFT)
Метод 3:
Цикл, работающий от самого большого до самого маленького. Если целое число больше 32, то вычтите 32, и последний бит равен true. Разделите контрольную цифру на 2 и повторяйте до проверки на 0,5.
Это код, с которым я на самом деле работаю. (Где $ row ['utilities'] выводится из SQL и содержит число от 0 до 63 включительно) Элемент формы, который создает данные для хранения в базе данных SQL, идентичен, за исключением php.
$bit = ???
<select name="ut[]" multiple="multiple" class="postSelect">
<option <?php if ($row['utilities']==0) {echo "selected='selected'";}?> value="0">None</option>
<option <?php if (bit['0']) {echo "selected='selected'";}?> value="1">Electricity</option>
<option <?php if (bit['1']) {echo "selected='selected'";}?> value="2">Water</option>
<option <?php if (bit['2']) {echo "selected='selected'";}?> value="4">Heat</option>
<option <?php if (bit['3']) {echo "selected='selected'";}?> value="8">Phone</option>
<option <?php if (bit['4']) {echo "selected='selected'";}?> value="16">Internet</option>
<option <?php if (bit['5']) {echo "selected='selected'";}?> value="32">Laundry</option>
</select>