2013-03-08 72 views
1

我有以下XML这我通过simplexml的访问:使用Smarty的分配多维数组

<sequences> 
    <sequence> 
     <ImageUrl id=""> 
      http://www.image.com/image.jpg 
     </ImageUrl> 
     <photographer>name</photographer> 
    </sequence> 
    <sequence> 
     <ImageUrl id=""> 
      http://www.image.com/image1.jpg 
     </ImageUrl> 
     <photographer>name 1</photographer> 
    </sequence> 
</sequences> 

我需要通过在模板这个数据智者和输出。我需要能够输出第一个序列图像和摄影师的名字,然后输出第二个。我怎样才能做到这一点?我可以看到你可以将一个数组传递给smarty,然后在模板中循环它,但我基本上需要传递一个多维数组,每个序列节点有一个数组。

回答

1

我结束了OBJ的智者分配整体的SimpleXML和环绕在它喜欢在模板中:

{foreach from=$contents key=key item=item} 
    {foreach from=$item key=k item=i} 
     {if $k eq 'ImageUrl'} 
      <img src="{$i}" /> 
     {/if} 
     {if $k eq 'photographer'} 
      <img src="{$i}" /> 
     {/if} 
0

您的XML转换为数组,那么:

在PHP

<?php 
$arr = array("first"=>1000, "second"=>1001, "third"=>1002); 
$smarty->assign('myArray', $arr); 
?> 

在Smarty的模板:

<ul> 
{foreach from=$myArray item=myArray name=myArray} 
    <li>{$myArray.first}</li> 
    <li>{$myArray.second}</li> 
    <li>{$myArray.third}</li> 
{/foreach} 
</ul> 
+0

否,我需要能够输出第一个序列图像和名称,然后单独输出第二个 – 2013-03-08 11:56:26

+0

然后将图像传递给不同变量而不是单个数组,然后将这些变量传递给smarty,并使用{$ var} – 2013-03-08 11:58:44

+0

来回显它,但是可能会有任意数量的序列项目,因此无法工作 – 2013-03-08 12:01:26