Smarty: проверьте, находится ли переменная в массиве

Я использую php с smarty. В php у меня есть два массива:

$code = Array
(
    [n_id] => 1
    [t_code] => ABC123
    [t_description] => Test code
    [b_enabled] => Yes
    [n_type] => 3
    [dt_start] => 
    [dt_end] => 
    [n_min_req_gbp] => 0
    [n_min_req_usd] => 0
    [n_amount_gbp] => 
    [n_amount_usd] => 
    [n_max_overall_gbp] => 
    [n_max_overall_usd] => 
    [n_extra] => 6
    [b_reuse] => No
    [n_applications] => Array
        (
            [0] => 2
        )
)

и

$all_application = Array
(
    [1] => New registration
    [2] => Mid-subscription upgrade
    [3] => Subscription renewal
    [4] => Additional purchase
)

Обратите внимание, что второй массив может - и будет - расти, это справочные данные, из которых n_applications поле массива в первом массиве построено. То есть массив в n_applications будет содержать подмножество ключей из массивов $ all_applications .

Теперь я ' m назначая эти два массива в шаблон:

$template->assign('code', $code);
$template->assign('apps', $all_applications);

А в шаблоне я создаю форму для редактирования полей в массиве $ code . Все работает нормально, кроме выбора «приложения». Я хочу предварительно выбрать те приложения, которые уже находятся в поле n_applications . Итак, в моем шаблоне у меня есть следующее:

<select name="c_apps[]" size="3" class="multiselect" multiple="multiple">
    {foreach from=$apps key=k item=a}
        {assign var=v value=$k|@array_search:$code['n_applications']}
        <option value="{$k}"{if $v!==FALSE} selected="selected"{/if}>{$a|escape}</option>
    {/foreach}
</select>

Однако это не работает должным образом - и в конечном итоге выбираются ВСЕ параметры . Я пробовал использовать in_array func ции - но с тем же результатом. Как лучше всего достичь того, что мне нужно?

6
задан Aleks G 11 November 2011 в 11:12
поделиться