Как проверить переменную, является ли она массивом или нет Есть решение

Вопрос такой. Мне нужно при выводе характеристик в товарах понимать, если очередной элемент массива хар-к тоже является массивом, то делать его обход и выводить все значения. Это для случая, когда у хар-ки несколько значений, т.е. Цвет: белый, красный, желтый.

phpэ'шная проверка is_array($var) естественно не работает. Все уже облазил, что можно и ничего нет по вопросу проверки типов данных

2 ответа

  • 2

    Вы стандартный код вывода характеристик смотрели? Там успешно работает проверка на массив

    {if is_array($f_value)}
        {if $features[$f_code].type == 'color'}
            {implode('<br /> ', $f_value)}
        {else}
            {implode(', ', $f_value)}
        {/if}
    {else}
        {$f_value}
    {/if}


  • 1
    Витек Коровин 17 октября 2020 13:05 #

    Стандартный код вывода в товарах я не нашел. Ваш пример я смотрю чисто для вывода значений идет. Он из какого шаблона взят?
    С is_array разобрался, не та переменная была, у нее value был массивом, а не key.
    Вот такая у меня система вывода названий и значений предвариетльно получилась.

    <table class="features__chars-table chars-table">
        {foreach $product.features as $featureName => $featureValue}
                <tr>
                    {foreach $features as $feature}
                        {if $featureName == $feature.code}
                            <td class="chars-table__feature-name">{$feature.name}: </td>
                        {/if}
                    {/foreach}
            
                    {if is_array($featureValue)}
                    <td class="chars-table__feature-value">
                            {foreach $featureValue as $value}
                                <span>{$value}</span>
                            {/foreach}
                     </td>
                        {else}
                     <td class="chars-table__feature-value">{$featureValue}</td>  
                        {/if}
                </tr>
        {/foreach}
        
    </table>



    • +1
      replicant replicant 17 октября 2020 13:49 #

      Под стандартным кодом обычно имеется ввиду код из темы дизайна Дефолт 3 (пример взят из файла product.html).

      Собственно этот кусок кода с is_array($f_value) в характеристиках можно встретить в неизменном виде в паре десятков других тем дизайна (Гипермаркет, FoxStore, YourShop, Мастершоп, Mobile и т.д.) Авторы тем дизайна в данном конкретном фрагменте кода стараются не изобретать велосипед, т.к. в нём всё уже оптимально сделано.

      • +1
        Витек Коровин Витек Коровин 19 октября 2020 17:48 #

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

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите