php – Smarty:检查变量是否在数组中

前端之家收集整理的这篇文章主要介绍了php – Smarty:检查变量是否在数组中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用PHP和smarty.在 PHP我有两个数组:
  1. $code = Array
  2. (
  3. [n_id] => 1
  4. [t_code] => ABC123
  5. [t_description] => Test code
  6. [b_enabled] => Yes
  7. [n_type] => 3
  8. [dt_start] =>
  9. [dt_end] =>
  10. [n_min_req_gbp] => 0
  11. [n_min_req_usd] => 0
  12. [n_amount_gbp] =>
  13. [n_amount_usd] =>
  14. [n_max_overall_gbp] =>
  15. [n_max_overall_usd] =>
  16. [n_extra] => 6
  17. [b_reuse] => No
  18. [n_applications] => Array
  19. (
  20. [0] => 2
  21. )
  22. )

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

注意,第二个数组可以 – 并且将 – 增长,这是参考数据,从中构建第一个数组中的n_applications数组字段.也就是说,n_applications中的数组将包含来自$all_applications数组的键的子集.

现在,我将这两个数组分配到模板中:

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

在模板中,我正在创建一个表单来编辑$code数组中的字段.除了“应用程序”选择之外,一切正常.我想预先选择那些已经在n_applications字段中的应用程序.所以,在我的模板中我有这个:

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

但是这不能按预期工作 – 并且所有选项最终都被选中.我尝试使用in_array函数 – 但结果相同.实现我追求的目标的最佳途径是什么?

在一切可能的方向上挣扎之后,我终于设法将它拉下来(仅限智能代码)
  1. <select name="c_apps[]" size="3" class="multiselect" multiple="multiple">
  2. {foreach from=$apps key=k item=a}
  3. {if @in_array($k,$code.n_applications)}
  4. {assign var=v value=true}
  5. {else}
  6. {assign var=v value=false}
  7. {/if}
  8. <option value="{$k}"{if $v} selected="selected"{/if}>{$a|escape}</option>
  9. {/foreach}
  10. </select>

这就是诀窍.

猜你在找的PHP相关文章