Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用smarty分配多维数组_Php_Smarty - Fatal编程技术网

Php 使用smarty分配多维数组

Php 使用smarty分配多维数组,php,smarty,Php,Smarty,我通过simplexml访问以下xml: <sequences> <sequence> <ImageUrl id=""> http://www.image.com/image.jpg </ImageUrl> <photographer>name</photographer> </sequence> <sequen

我通过simplexml访问以下xml:

<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>

http://www.image.com/image.jpg
名称
http://www.image.com/image1.jpg
名字1

我需要将此数据传递给smarty并在模板中输出。我需要能够输出第一个序列图像和摄影师姓名,然后是第二个。我该怎么做?我可以看到,您可以将一个数组传递给smarty,然后在模板中对其进行循环,但我基本上需要传递一个多维数组,每个序列节点一个数组。

将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>
    {foreach from=$myArray item=myArray name=myArray}
  • {$myArray.first}
  • {$myArray.second}
  • {$myArray.third}
  • {/foreach}

将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>
    {foreach from=$myArray item=myArray name=myArray}
  • {$myArray.first}
  • {$myArray.second}
  • {$myArray.third}
  • {/foreach}

我最终将整个simplexml obj分配给smarty,并在其上循环,就像在模板中一样:

{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}
{foreach from=$contents key=key item=item}
{foreach from=$item key=k item=i}
{如果$k eq'ImageUrl'}
{/if}
{如果$k eq“摄影师”}
{/if}

我最终将整个simplexml obj分配给smarty,并在其上循环,就像在模板中一样:

{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}
{foreach from=$contents key=key item=item}
{foreach from=$item key=k item=i}
{如果$k eq'ImageUrl'}
{/if}
{如果$k eq“摄影师”}
{/if}

no,我需要能够输出第一个序列图像和名称,然后分别输出第二个序列图像,然后以不同的变量(而不是单个数组)传递图像,将这些变量传递给smarty,并使用{$var}对其进行回显,但可能存在任意数量的序列项,因此永远无法工作否,我需要能够输出第一个序列图像和名称,然后分别输出第二个序列图像,然后以不同的变量(而不是单个数组)传递图像,将这些变量传递给smarty,并使用{$var}对其进行回显,但可能会有任意数量的序列项,因此这永远不会起作用