php - 在 Smarty 中从数组中获取某些值

标签 php arrays smarty smarty3 smarty2

我已经尝试了几个小时,如果只是 PHP,我现在就完成了,但这需要 Smarty 3,所以事情有点不同。我很难从数组中获取特定的复数键。数组看起来像这样

Array
(
    [0] => Array
        (
            [id] => 1
            [client] => Jane Doe
            [email] => <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0268636c6742666d672c616d6f" rel="noreferrer noopener nofollow">[email protected]</a>
        )
   [1] => Array
        (
            [id] => 2
            [client] => John Doe
            [email] => <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6c060304022c080309420f0301" rel="noreferrer noopener nofollow">[email protected]</a>
        )
   [2] => Array
        (
            [id] => 3
            [client] => Jim Doe
            [email] => <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="02686b6f42666d672c616d6f" rel="noreferrer noopener nofollow">[email protected]</a>
        )

我可以使用 PHP 访问它,Smarty 让我很困惑,文件是两个

  • clients.php
  • clients.tpl <- 聪明

我使用以下内容在 .php 文件中分配数组

$totalEntries = $results['products']['product'];
$ca->assign('innerArray', $totalEntries);

$results['products']['product'] 输出上面看到的数组。

现在在 .tpl 文件中,我有以下内容

  <select class="form-control" id="sel1">
   {foreach $innerArray as $results} 
    {foreach from=$results.client item=label}
    <option value="{$label}">{$label}</option>
    {/foreach}
  {/foreach}
  </select>

这可以输出到下拉列表

  • 无名氏
  • 约翰·多伊
  • 吉姆·多伊

我正确地理解了这一部分,并且我一直在互联网上查找以找出答案。我的计划是在下拉菜单中引入类似

但是,当我使用类似以下内容尝试执行此操作时,我删除了 from=

.client 部分
  <select class="form-control" id="sel1">
   {foreach $innerArray as $results} 
    {foreach from=$results item=label}
    <option value="{$label.client}">{$label.client} - {$label.email}</option>
    {/foreach}
  {/foreach}
  </select>

我遇到了一个看起来像这样的列表

  • 1 - 1
  • J - J
  • j - j
  • 2 - 2
  • J - J
  • j - j
  • 3 - 3
  • J - J
  • j - j

我意识到这基本上是第一个字母和数字,但是我在网上看到了各种示例,表明我可以从数组中获取我需要的内容,但是当我尝试 $label.client - $label.email 这不会起作用。

我做错了什么?

最佳答案

这与您的方式不同,但使用 {section} 即可:

<select class="form-control" id="sel1">
{section name=seq loop=$innerArray}
  <option value="{$innerArray[seq].id}">{$innerArray[seq].client} - $innerArray[seq].email}</option>
{/section}
</select>

关于php - 在 Smarty 中从数组中获取某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46875833/

相关文章:

php - 使用 jQuery 为隐藏的输入字段赋值

php - 何时检查查询是否成功完成

php - 在 PHP 中确定 $x 是否可以被 $y 整除

java - 引用、浅复制和深复制

php - 在我的网站中使用模板功能来检索 PHP Smarty 生成的 HTML 并使用 ajax 响应显示是一个好主意吗?

php - 由于 INT 值而调用 boolean 的成员函数 fetch()?

python - 使 numpy 数组单调,无需 Python 循环

performance - 最快的 Smarty 缓存处理程序

javascript - smarty模板引擎可以用来在客户端创建模板吗?

javascript - 我怎样才能从数组中删除一些东西?