Вы можете использовать переменную для индексов, но вы не можете построить строку так, как вы пытались. Попробуйте создать пользовательскую переменную до:
{$myIndex = "param_{$k.id}_{$p.num}"}
{if $smarty.get.$myIndex eq $key}
...
Это должно работать.
Попробуйте этот запрос: -
Family.update(
{ "users.permission":0, "users.joined_date": {$lte: From_joinedTime}},
{ "$set": { "users.$.permission": 1 } },
{ "multi": true }
)
Позиционный оператор $ позаботится об обновлении соответствующего пользователя внутри массива.