Есть ли альтернатива PHP In_array () в Shopify? - PullRequest
0 голосов
/ 01 июля 2019

Я много чего перепробовал, но не получил именно то, что искал.

Ниже приведен пример того, какой тип массива я ищу в Shopify,

$ array ['bag'] = 2; $ array ['shoes'] = 3; $ array ['xyz'] = 6;

Вот пример того, что и как я ищу для своей переменной массива в shopify.

Где

сумка, обувь, XYZ

тип продукта

и 2,3,6

- количество продуктов, добавленных для определенного типа продукта.

Я знаю, что это легко в PHP, но не знаю, как это сделать в Shopify.

Может кто-нибудь из вас, пожалуйста, помогите мне, будет очень признателен!

1 Ответ

1 голос
/ 01 июля 2019

Согласно Shopify документации , вы не можете инициализировать массивы. Однако вы можете использовать фильтр разделения , чтобы создать одномерный массив. Вы не можете создавать ассоциативные массивы, используя это. Однако, в качестве обходного пути, используйте 2 массива одинаковой длины, где один и тот же индекс в обоих массивах указывает на связанный ключ и значение как на связанный массив. Пример кода

  {% assign product_type = "type-1|type-2|type-3" | split: '|' %}
  {% assign product_count = "1|2|3" | split: '|' %}


    {% for p_type in product_type %}
        {{ p_type }}
        {{ product_count[forloop.index0] }}
    {% endfor %}

Ожидаемый результат

Product Type   Count
type-1           1
type-2           2
type-3           3

Для вашего конкретного сценария, поясненного в комментариях, взгляните на приведенный ниже код и комментарии кода. Я использовал объект проверки для примера кода. Вы можете настроить в соответствии с вашими потребностями.

// declare 2 vars to create strings - that will be converted to arrays later
{% assign product_type = "" %}
{% assign product_count = "" %}

// iterate over line_items in checkout to build product_type string
{% for line_tem in checkout.line_items %}
  // if product_type exists , then skip -- unique product types
  {% if product_type contains line_tem.product.type%}
  {% else %}
    {% assign product_type = product_type | append: '#' | append: line_tem.product.type %}   
  {% endif %}

{% endfor %}

// remove first extra hash and convert to array
{% assign product_type = product_type | remove_first: "#" | split: '#' %}


// iterate over unique product type array generated earlier
{% for product_type_item in product_type %}
// set product count for this product type to zero initially
{% assign total_count = 0 %}
// iterate over all lin items and +1 if same product type
  {% for line_tem in checkout.line_items %}
    {% if product_type_item == line_tem.product.type%}
      {% assign total_count = total_count | plus: 1 %} 
    {% endif %}
  {% endfor %}
  // append count to product count string
  {% assign product_count = product_count | append: '#' | append: total_count %}
{% endfor %}

// remove first extra hash and convert to array
{% assign product_count = product_count | remove_first: "#" | split: '#'%}

{{-product_type-}}

{{-product_count-}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...