Форум пользователей Impera CMS
Impera CMS - отличный движок для лёгкого создания интернет магазина.
Обладает невероятным количеством функций, необходимых в онлайн торговле.

Следить
Главная
12:11
23 окт
#
написал:

Предположим, в переменной $product у нас есть запись товара, и пусть поле $product->channels этой переменной содержит массив со списком разрешенных каналов Яндекс.Маркет для данного товара. То есть массив чисел, где каждое число лежит в диапазоне от 1 до 32. Например:

    $product = new stdClass;
    $product->channels = array(3, 5, 8);

Так как в движке Impera CMS с версии 131021 поле ymarket хранится в базе данных уже как сумма битовых состояний 32 каналов, то вычислить значение этого поля для конкретного товара можем следующим образом, например с помощью математического сложения и оператора возведения в степень pow:

    $product->ymarket = 0;
    foreach ($product->channels as $channel) {
        $channel--;
        $product->ymarket += pow(2, $channel);
    }

То же действие, только с помощью битовых операторов (здесь | - битовое сложение, << - битовое умножение на 2):

    $product->ymarket = 0;
    foreach ($product->channels as $channel) {
        $channel--;
        $product->ymarket = $product->ymarket | 1 << $channel;
    }

Аналогичные вычисления применимы к категориям при вычислении их поля ymarket.

Написание ответа

Перед публикацией рекомендуется использовать Предпросмотр, чтобы увидеть конечный вид сообщения.


Обратите внимание! Для противодействия спаму новые посты форума проявляются с задержкой от нескольких минут, пока не пройдут модерацию.