2015-09-14 4 views
1

Моя проблема, Exapmle:Smarty TPL массив внутри переменной?

$a = array(); <- 1 mysql row 
$id1 = 0; $id2 = 0; 
$smarty->assign("a",$a); 
$smarty->assign("id1",$id1); 
$smarty->assign("id2",$id2); 

Решение в PHP:

if($a['column_'.$id1.'_'.$id2]==0){echo"ok";}else{echo"no";} 

Smarty TPL? Я пробовал:

{if $a.column_'.$id1.'_'.$id2 == 0}{/if} 

Фатальная ошибка (?: Я не найти какой-либо помощи, спасибо

ответ

0

Ваш первый референт должен состоять в том, чтобы попытаться реструктурировать ваши данные - будь то на PHP или в Smarty, используя составной ключ для представления нескольких измерений таких данных, которые, как правило, становятся беспорядочными. PHP делает работу с многомерными массивами невероятно легкой, поэтому стыдно не использовать эту мощность.

Вы могли бы перебираем ваших данных и создать новую структуру с чем-то вроде этого:

$better_structured_array = []; 
foreach ($awkward_raw_array as $old_key => $item_value) { 
    list($first_key, $second_key, $third_key) = explode('_', $old_key); 
    $better_structured_array[$first_key][$second_key][$third_key] = $item_value; 
} 

Тогда ваш Smarty будет легко:

{if $a.column[$id1][$id2] == 0}{/if} 

Если вы действительно не можете сделать это для по какой-то причине фокус состоит в том, чтобы сначала вставить ключ в переменную, а затем использовать его как ключ доступа:

{assign name=ugly_array_key value='column_'|cat:$id1|cat:'_'|cat:$id2} 
{if $a[$ugly_array_key] == 0}{/if} 
+0

Спасибо, этот вопрос, но проблема у меня другая. Извините, мой плохой английский, я пытаюсь подвести итог. У меня есть три массива. Например: $ selects, $ options, $ saved_data. {foreach from = $ selects item = i}