Как использовать переменные в индексе массива smarty [duplicate]

Я обнаружил, что некоторое решение не работает для меня в Simulator в Xcode. Вместо этого это работает:

ObjC

NSString *deviceModel = (NSString*)[UIDevice currentDevice].model;

if ([[deviceModel substringWithRange:NSMakeRange(0, 4)] isEqualToString:@"iPad"]) {
    DebugLog(@"iPad");
} else {
    DebugLog(@"iPhone or iPod Touch");
}

Swift

if UIDevice.current.model.hasPrefix("iPad") {
    print("iPad")
} else {
    print("iPhone or iPod Touch")
}

Также в «других примерах» в Xcode модель устройства возвращается как « iPad Simulator ', поэтому вышеупомянутая настройка должна разобраться в этом.

1
задан Mathletics 19 June 2012 в 15:38
поделиться

3 ответа

Вы можете использовать переменную для индексов, но вы не можете построить строку так, как вы пытались. Попробуйте создать пользовательскую переменную до:

{$myIndex = "param_{$k.id}_{$p.num}"}
{if $smarty.get.$myIndex eq $key}
    ...

Это должно работать.

2
ответ дан lorenzo-s 19 August 2018 в 05:14
поделиться
  • 1
    Он не дает ошибку, но var кажется пустым ... Необходимо проверить, есть ли у меня какая-то ошибка в моем коде. – pawel-kuznik 20 June 2012 в 00:01
  • 2
    – pawel-kuznik 20 June 2012 в 00:05
  • 3
    Я думаю, что это по дизайну. Ваш код просто недействителен. Синтаксис Smarty. – lorenzo-s 20 June 2012 в 07:15

В моем случае я использовал решение UnLoCo и попытался напрямую получить доступ к содержимому массива (без оператора if) с помощью динамического ключа, и он отлично работает:

{$arr1["column_{$arr2.month}_price"]}
1
ответ дан Meloman 19 August 2018 в 05:14
поделиться
  • 1
    Подтверждено, в PS 1.6.1.12 {$myVar["keybase_{$i}"]} работает. – jave.web 21 August 2017 в 16:50

Это будет работать и

{if $smarty.get["param_{$k.id}_{$p.num}"] eq $key}
  ...
0
ответ дан UnLoCo 19 August 2018 в 05:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: