Php 如何在smarty模板中访问数组的键和值?
我正在从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 ) 现在,将此数组分配
$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}…
?