Использование массива в качестве ключа ко второму массиву в Smarty (PHP)

StackOverflow https://stackoverflow.com/questions/952821

  •  11-09-2019
  •  | 
  •  

Вопрос

В моем коде запущены два цикла, я хочу использовать элемент из массива в качестве ключа во втором массиве, но не уверен, как это сделать с помощью 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.В остальном это работает (тоже проверено :) ).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top