Не срабатывает условие if not in

78
18 июня 2019, 06:00

Мне нужно вести все товары в заказах без повторений. В этом примере в двух разных заказах содержится один и тот же товар.

{% set newprod = [] %} {# Массив выведенных товаров #}
{% for order in orders %} {# Перебираю заказы - их 2 #}
    {% if order.courier == cour %} {# Отбор заказов для конкретного курьера #}                                                            
           {% for product in order.availableOrderProducts %}  {# Перебираю товары в заказе #}                                                                
                  {% if product not in newprod %} {# Если товара раньше не было #}
                        {% set newprod = newprod|merge([product]) %} {# Добавить товар в массив выведенных товаров #}
                        <tr> {# вывожу информацию о товаре #}
                            <td class="numeric">                                                                            
                              {% for i in newprod %}                                                                       
                                {{ i }}<br>                                                                              
                              {% endfor %}                                                                                 
                            </td>                                                                            
                            <td class="numeric">{{ order.deliveryDate|date('d.m.Y') }}</td>                                                                               
                            <td class="numeric">{{ product }}</td>                                                                             
                            <td class="numeric">{{ product.quantity }}</td>
                         </tr>
                   {% endif %}                                              
             {% endfor %}                                
     {% endif %}
{% endfor %}

Почему-то, не срабатывает условие в последней итерации {% if product not in newprod %}. Это видно на скрине ниже. В столбце отладка я вывожу массив выведенных товаров. Товар, который уже есть в массиве, снова попадает в него.

Помогите, пожалуйста, найти ошибку

Answer 1

product - это объекты. Разные объекты, даже если они соответствуют одному и тому же товару, - не равны. Помещайте в массив newprod что-то типа product.id.

READ ALSO
Зачем задавать переменной тип массив?

Зачем задавать переменной тип массив?

Иногда встрачаю такие записи:

105
Редирект id на pdo

Редирект id на pdo

Всем приветУ меня есть 3 textarea и input

125
Множественные API запросы c сервера

Множественные API запросы c сервера

Заранее прошу прощение, если вопрос поставлен неправильно: программирование - не моя основная специализация

108