首页 > 解决方案 > 如何从 Smarty 中的多维度数组中打印一个项目并随后循环遍历它?

问题描述

一般来说,我对 Smarty 和 PHP 非常陌生,并且在多维数组方面非常挣扎。我有一个名为$tag_groups. 当我打印数组时,{$tag_groups|@debug_print_var}我得到以下输出:

Array (2)
0 => Array (2)
  tags => Array (4)
    0 => Array (8)
      id => "10"
      name => "Os coxa"
      url_name => "axial_os_coxa"
      lastmodified => "2020-02-18 10:42:13"
      counter => 76
      level => 3
      group => "Axial"
      URL => "index.php?/tags/10-axial_os_coxa"
    1 => Array (8)
      id => "12"
      name => "Rib"
      url_name => "axial_rib"
      lastmodified => "2020-02-18 10:42:13"
      counter => 76
      level => 3
      group => "Axial"
      URL => "index.php?/tags/12-axial_rib"
    2 => Array (8)
      id => "13"
      name => "Sternum"
      url_name => "axial_sternum"
      lastmodified => "2020-02-18 10:42:13"
      counter => 76
      level => 3
      group => "Axial"
      URL => "index.php?/tags/13-axial_sternum"
    3 => Array (8)
      id => "11"
      name => "Vertebra"
      url_name => "axial_vertebra"
      lastmodified => "2020-02-18 10:42:13"
      counter => 76
      level => 3
      group => "Axial"
      URL => "index.php?/tags/11-axial_vertebra"
  TITLE => "Axial"
1 => Array (3)
  tags => Array (2)
    0 => Array (8)
      id => "17"
      name => "Pan"
      url_name => "extant_primates_pan"
      lastmodified => "2020-02-18 10:42:13"
      counter => 76
      level => 3
      group => "Extant primates"
      URL => "index.php?/tags/17-extant_primates_pan"
    1 => Array (8)
      id => "18"
      name => "Pongo"
      url_name => "extant_primates_pongo"
      lastmodified => "2020-02-18 10:42:13"
      counter => 76
      level => 3
      group => "Extant primates"
      URL => "index.php?/tags/18-extant_primates_pongo"
  CHANGE_COLUMN => true
  TITLE => "Extant primates"

Array (2)is$tag_groups和接下来的两个较低级别(即0 => Array (2)1 => Array (3))是$tag_group

如何仅打印TITLE每个$tag_group或至少一个子级别?

我试过了

{$tag_groups.TITLE|@debug_print_var}
{$tag_groups['tag_group']|@debug_print_var}

还有一些其他变体,我要么总是得到 null 要么是 php 错误(例如,当我尝试时{$tag_groups item='tag_group'|@debug_print_var})。

我的想法是,如果我只能打印数组的每个子级别的 TITLE,我就会知道使用什么语法来使用 if 条件循环遍历它,因为我想要做的看起来像这样

{foreach foreach from=$tag_groups item=tag_group.TITLE}
  {if in_array('Axial', $tag_group.TITLE)}
   DoSomethingAboutIt
  {/if}
{/foreach} 

但我什至不确定这是不是有效的想法。

谢谢您的帮助!

标签: phploopsif-statementmultidimensional-arraysmarty

解决方案


好的,我想我解决了

{foreach from=$tag_groups item=tag_group}
    {$tag_group.TITLE|@debug_print_var}
{/foreach}

我来自 R,所以循环遍历数组以打印其子元素对我来说没有意义....


推荐阅读