Как в Fenom проверить наличие в массиве?
Как проверить наличие ключа в массиве на Fenom?
То есть нужен аналог php-функции in_array()
Есть массив:
Пробовал следующим образом:
То есть с таким же успехом будет работать и этот вариант, хотя и не должен, ложное срабатывание:
Пробовал и так
То есть нужен аналог php-функции in_array()
Есть массив:
{set $compl = ["19","35","18","20","54"]}
Пробовал следующим образом:
{if '19' in $compl}da{else}net{/if}
Вроде бы подходит, но не тут то было, он подхватывает не всё значение, а только его часть. То есть с таким же успехом будет работать и этот вариант, хотя и не должен, ложное срабатывание:
{if '1' in $compl} // нет значения "1", зато есть два значения где оно является частью
Пробовал и так
{if '1' in list $compl}
и так:{if '1' in keys $compl}
— вообще ничего не выводит…
Поблагодарить автора
Отправить деньги
Комментарии: 8
Не хотелось бы писать отдельный сниппет для проверки наличия в массиве не убедившись вначале что Fenom не может такого…
Попробуй в скобочках:
{if ('1' in list $compl)}
Нет, тоже не работает как и без скобок.
Такой вариант выдаёт net, хотя должен выдавать da:
Такой вариант выдаёт net, хотя должен выдавать da:
{if ('19' in list $compl)}da{else}net{/if} // '19' (строчное) точно есть
Результат точно такой же как и без скобок во всех вышеперечисленных вариантах…
Ну вот у меня, код с живого проекта работает:
{($product.id in list $favorites) ? 'remove' : 'add'}
Больше идей нет.
Спасибо, но странно что не работает.
Мои эксперименты:
В системных настройках по феному всё что можно включено:
pdotools_fenom_default — 1
pdotools_fenom_modx — 1
pdotools_fenom_options — 1
pdotools_fenom_parser — 1
pdotools_fenom_php — 1
Видно в моём случае сделаю маленький костылёк модификатором…
Мои эксперименты:
{$compl|print} // ["19","35","18","20","54"]
{var $v = '19'}
{if ($v in list $compl)}da{else}net{/if} // net
{($v in list $compl) ? 'da' : 'ne'} // ne
{var $v = '199'}
{if ($v in list $compl)}da{else}net{/if} // net
{($v in list $compl) ? 'da' : 'ne'} // ne
{var $v = '1'}
{if ($v in list $compl)}da{else}net{/if} // net
{($v in list $compl) ? 'da' : 'ne'} // ne
{var $v = 19} // без кавычек
{if ($v in $compl)}da{else}net{/if} // net
{($v in list $compl) ? 'da' : 'ne'} // ne
В системных настройках по феному всё что можно включено:
pdotools_fenom_default — 1
pdotools_fenom_modx — 1
pdotools_fenom_options — 1
pdotools_fenom_parser — 1
pdotools_fenom_php — 1
Видно в моём случае сделаю маленький костылёк модификатором…
Судя по распечатке, у тебя $compl — json строка. А вот с нормальным массивом
{set $compl = ["19","35","18","20","54"]}
{if '19' in $compl}da{else}net{/if}
выводит da.
ДА, ДА и снова ДА!!!
В очередной раз восхищаюсь твоим умением разгадывать чужие загадки!
Я забыл пропустить через json_decode и создал на пустом месте проблему, извини что подёргал тебя зря, но для меня вся эта информация была полезной, спасибо!
Теперь всё работает прекрасно!
В очередной раз восхищаюсь твоим умением разгадывать чужие загадки!
Я забыл пропустить через json_decode и создал на пустом месте проблему, извини что подёргал тебя зря, но для меня вся эта информация была полезной, спасибо!
Теперь всё работает прекрасно!
Раньше условие на in срабатывало потому что оно искало через strpos() вхождения в json-строке…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.