Php 如何在smarty模板中访问数组的键和值?

Php 如何在smarty模板中访问数组的键和值?,php,arrays,foreach,smarty,Php,Arrays,Foreach,Smarty,我正在从php文件向smarty模板文件分配一个名为$inquiries\u labels的数组。如果我在PHP文件中打印数组,其输出如下: Array ( [0] => New Enquiry [1] => Retail Enquiry [2] => Feedback [3] => Payment Query [4] => Package Query [5] => Test Query ) 现在,将此数组分配

我正在从php文件向smarty模板文件分配一个名为
$inquiries\u labels
的数组。如果我在PHP文件中打印数组,其输出如下:

Array
(
    [0] => New Enquiry
    [1] => Retail Enquiry
    [2] => Feedback
    [3] => Payment Query
    [4] => Package Query
    [5] => Test Query
)
现在,将此数组分配给smarty文件后,我希望在select HTML控件中访问这些值。为此,我需要使用smarty模板引擎的foreach循环构造。如果预选值与数组中的键匹配,则我将保持该值处于选中状态。为了实现这一点,我尝试了下面的代码,但对我无效。在这方面有人能帮我吗?以下是我在smarty模板中尝试的代码,供您参考:

<select name="contact_label" id="contact_label"> 
{if $enquiries_labels}
                  {foreach from=$enquiries_labels item=label}
                    <option value="{$label.key}" {if $data.key == $label.key} selected="selected" {/if}>{$label.value}
                    </option>
                  {/foreach}
                {/if}
      </select>

{如果$INQUIRES_labels}
{foreach from=$inquiries\u labels item=label}
{$label.value}
{/foreach}
{/if}

谢谢你花了一些宝贵的时间来理解我的问题

在您的
foreach
中使用

{foreach from=$enquiries_labels item=label key=key}
          <option value="{$key}" {if $data.key == $key} selected="selected" {/if}>{$label}
          </option>
{/foreach}
{foreach from=$inquiries\u labels item=label key=key}
{$label}
{/foreach}

它都在。

使用
属性

{foreach from=$enquiries_labels item="label" key="key"}
    <option value="{$key}"{if $data.key == $key} selected="selected"{/if}>{$label}</option>
{/foreach}
{foreach from=$inquiries\u labels item=“label”key=“key”}
{$label}
{/foreach}

Smarty 3 foreach构造如下

{foreach $products as $p}
    {$p@key}: {$p}
{/foreach}
这同样有效

{foreach $products as $product}
    key: {$product@key} -> value: {$product@value} 
{/foreach}

{$product@value} = {$product}
您可以这样做:

{foreach$inquiries\u标签为$key=>$value}
{$value}
{/foreach}

在这种特殊情况下(a的构建选项),您可以只使用
{html\u options=$inquiries\u labels selected=$data.key name=“contact\u label”id=“contact\u label”}
。Smarty将为您生成完整的和标记。这是如此简单和优雅为什么不
{foreach$products as$key=>$p}…