Использование массива в качестве ключа ко второму массиву в Smarty (PHP)
Вопрос
В моем коде запущены два цикла, я хочу использовать элемент из массива в качестве ключа во втором массиве, но не уверен, как это сделать с помощью Smarty.
"$dateAndUserForEdit.$key.edit_id
" содержит целое число (извлеченное из базы данных)
Я хочу использовать это значение в качестве ключа во втором цикле, который выполняется нормально, если я вводю код в целое число:
{foreach from=$historyOfRepair.9 key=key item=i}
Псевдокод для того, что я пробовал, это:
{foreach from=$historyOfRepair.{$dateAndUserForEdit.$key.edit_id} key=key item=i}
Но, конечно, это не работает!Кто-нибудь может помочь?
Решение
Что-то вроде next может сработать (в настоящее время не удается протестировать):
{assign var=edit_id value=$dateAndUserForEdit.$key.edit_id}
{foreach from=$historyOfRepair.$edit_id key=key item=i}
Другие советы
Я не знаю, был ли этот трюк необходим для старых версий, но вы можете (как я полагаю, уже довольно давно) сделать это:
учитывая , что:
{$someArray.someKey=9}
{$otherArray.9=$someValue}
Эквивалент:
{$otherArray[$someARray.$someKey]=$someValue}
Я комментирую здесь только потому, что никто еще не дал вам никакого совета...Я никогда не пользовался Smarty, так как всегда просто создавал свои собственные системы шаблонов (так что здесь я могу быть невежественным и мои советы бесполезны)...
Можете ли вы просто создать свой массив без smarty, а затем передать его Smarty для отображения?Лично я, вероятно, сделал бы это для чего-то другого, кроме базовых вещей, вместо того, чтобы возиться с пользовательским кодом движка шаблонов.
Я бы согласился с Арво.Вы захотите присвоить идентификатор временной переменной, чтобы его можно было использовать в качестве замены в цикле foreach.Обратите внимание, что в его примере кода значение $key будет заменено ключом текущего элемента массива $historyOfRepair.В остальном это работает (тоже проверено :) ).