Необходимо сделать константы по сумме которых можно было бы определить что там лежит, как пример можно рассмотреть PHP JSON CONSTANT https://www.php.net/manual/ru/json.constants.php.
Описание: Нужно что-то вроде
1 - тип 1;
2 - тип 2;
3 - тип 3;
10 - возвращено на доработку;
20 - направлено на проверку;
100 - повторно;
Задача
Быстр вычислить из значения по какой-то формуле, что туда закодировано.
Прошу подсказать куда копать. может есть какие то готовое решения или формулы и правила формирования таких констант, желательно на PHP
.
Обычным подходом является установка необходимых флагов в отдельных битах числа.
В вашем примере есть два вида флагов, условно говоря, тип (3 вида) и состояние (3 вида). Давайте устанавливать в младшие ⌈log2(3)⌉ = 2
бита информацию о типе и в следующие ⌈log2(3)⌉ = 2
бита информацию о состоянии. Определим следующие константы:
const TYPE1 = 0b00000000;
const TYPE2 = 0b00000001;
const TYPE3 = 0b00000010;
const STATE1 = 0b00000000;
const STATE2 = 0b00000100;
const STATE3 = 0b00001000;
Далее, для получения значения, кодирующего оба состояния, возьмём битовую сумму констант каждого вида:
$result = TYPE2 | STATE3; // 0b00001001
Теперь, чтобы обратно узнать, какие флаги были выставлены, битово умножим получившееся значение на необходимую маску:
switch ($result & 0b00001100) {
case STATE1:
//
break;
case STATE2:
//
break;
case STATE3:
//
break;
default:
echo 'error value';
}
http://sandbox.onlinephpfunctions.com/code/2024a763d84c6d8bd324545e78bd27d1eeddd869
Заметьте, что 8-битные числа были использованы для примера. В реальных программах можно использовать 32-битные или 64-битные числа в зависимости от системы.
В PHP 7.4, кстати, реализовано разделение цифр числа подчёркиванием. Так что можно написать:
const TYPE1 = 0b0000_00_00;
const TYPE2 = 0b0000_00_01;
const TYPE3 = 0b0000_00_10;
const STATE1 = 0b0000_00_00;
const STATE2 = 0b0000_01_00;
const STATE3 = 0b0000_10_00;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Установил google/cloud-vision через композер Устанавливаю переменную окружения с путем до файла с ключем, выполняю код из примера:
Есть следующая регулярка которая проверяет номер телефона /373(\d{9})$/
Оплата проходит, но номер почему-то не меняетсяВ БД есть колонка с полем ordernum, там я планировал делать номер заказа +1 каждый раз
Как правильно скачивать статические файлы с удаленного сервера? 1 запуск скрипта = 1 скачивание файла, те keep-alive не рассматривается