For Programmers: Free Programming Magazines  


Home > Archive > PHP Smarty Templates > April 2005 > Re: [SMARTY] Referencing complex associative array









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Re: [SMARTY] Referencing complex associative array
Abdul-Wahid Paterson

2005-04-28, 8:58 am

It is a bit hard to read the structure...but i think...


$result->ITEMS is the array with your news items
so

{section name=3Dnews loop=3D$result.ITEMS}
<tr>
<td>
{$result.ITEMS.[news].LINK}
</td>
</tr>
{/section}

But I am a bit from your email what is $result and what is $news.

Abdul-Wahid

This would would loop through the news items.
On 4/28/05, Roger Thomas <sniper@home.net.my> wrote:
> Hi,
> I parsed an XML file and pushed the results into an array. My question is=

, when I assign this array, $result, to Smarty, how do I reference it ?
>=20
> I have something like:
> {section name=3Dfeed loop=3D$news}
> <tr>
> <td>
> {$news[feed].COPYRIGHT}
> </td>
> </tr>
> {/section}
>=20
> How do I reference, say, the LINK under ITEMS ? Please advise.
>=20
> If I do a var_dump on $result, it looks like this:
>=20
> array(10) {
> ["TITLE"]=3D>
> string(39) "BBC News | News Front Page | UK Edition"
> ["LINK"]=3D>
> string(47) "http://news.bbc.co.uk/go/rss/-/1/hi/default.stm"
> ["DESCRIPTION"]=3D>
> string(33) "Updated every minute of every day"
> ["LANGUAGE"]=3D>
> string(5) "en-gb"
> ["LASTBUILDDATE"]=3D>
> string(27) "Wed, 27 Apr 05 23:59:27 GMT"
> ["COPYRIGHT"]=3D>
> string(92) "Copyright: (C) British Broadcasting Corporation, http://new=

s.bbc.co.uk/1/hi/help/3281849.stm"
> ["DOCS"]=3D>
> string(33) "http://www.bbc.co.uk/syndication/"
> ["TTL"]=3D>
> string(2) "15"
> ["IMAGE"]=3D>
> array(3) {
> ["TITLE"]=3D>
> string(8) "BBC News"
> ["URL"]=3D>
> string(56) "http://news.bbc.co.uk/nol/shared/img/bbc_news_120x60.gif"
> ["LINK"]=3D>
> string(21) "http://news.bbc.co.uk"
> }
> ["ITEMS"]=3D>
> array(5) {
> [0]=3D>
> array(5) {
> ["TITLE"]=3D>
> string(31) "Early Iraq legal opinion leaked"
> ["DESCRIPTION"]=3D>
> string(115) "The attorney general doubted the Iraq war would be leg=

al without a new resolution from the UN, leaked advice shows."
> ["LINK"]=3D>
> string(79) "http://news.bbc.co.uk/go/rss/-/1/hi/uk_politics/vote_20=

05/frontpage/4491105.stm"
> ["GUID"]=3D>
> string(70) "http://news.bbc.co.uk/1/hi/uk_politics/vote_2005/frontp=

age/4491105.stm"
> ["PUBDATE"]=3D>
> string(27) "Wed, 27 Apr 05 22:32:09 GMT"
> }
> [1]=3D>
> array(5) {
> ["TITLE"]=3D>
> string(32) "Man arrested over Abigail attack"
> ["DESCRIPTION"]=3D>
> string(96) "A 25-year-old man has been arrested by detectives hunti=

ng the man who stabbed Abigail Witchalls."
> ["LINK"]=3D>
> string(73) "http://news.bbc.co.uk/go/rss/-/1/hi/england/southern_co=

unties/4492119.stm"
> ["GUID"]=3D>
> string(64) "http://news.bbc.co.uk/1/hi/england/southern_counties/44=

92119.stm"
> ["PUBDATE"]=3D>
> string(27) "Wed, 27 Apr 05 23:53:19 GMT"
> }
> [2]=3D>
> array(5) {
> ["TITLE"]=3D>
> string(32) "Jackson's ex-wife in witness box"
> ["DESCRIPTION"]=3D>
> string(122) "Prosecutors in Michael Jackson's child abuse trial beg=

in questioning the star's ex-wife and mother of two of his children."
> ["LINK"]=3D>
> string(67) "http://news.bbc.co.uk/go/rss/-/1/hi/entertainment/music=

/4490259.stm"
> ["GUID"]=3D>
> string(58) "http://news.bbc.co.uk/1/hi/entertainment/music/4490259.=

stm"
> ["PUBDATE"]=3D>
> string(27) "Wed, 27 Apr 05 21:58:53 GMT"
> }
> [3]=3D>
> array(5) {
> ["TITLE"]=3D>
> string(33) "US terror charge Briton convicted"
> ["DESCRIPTION"]=3D>
> string(112) "A British man is found guilty of attempting to support=

terrorism after trying to sell a missile to an FBI agent."
> ["LINK"]=3D>
> string(50) "http://news.bbc.co.uk/go/rss/-/1/hi/uk/4491181.stm"
> ["GUID"]=3D>
> string(41) "http://news.bbc.co.uk/1/hi/uk/4491181.stm"
> ["PUBDATE"]=3D>
> string(27) "Wed, 27 Apr 05 20:07:48 GMT"
> }
> [4]=3D>
> array(5) {
> ["TITLE"]=3D>
> string(28) "Airbus A380 completes flight"
> ["DESCRIPTION"]=3D>
> string(103) "The world's largest passenger plane, the Airbus A380, =

lands safely, having completed its maiden flight."
> ["LINK"]=3D>
> string(56) "http://news.bbc.co.uk/go/rss/-/1/hi/business/4488361.st=

m"
> ["GUID"]=3D>
> string(47) "http://news.bbc.co.uk/1/hi/business/4488361.stm"
> ["PUBDATE"]=3D>
> string(27) "Wed, 27 Apr 05 17:32:10 GMT"
> }
> }
> }
>=20
> --
> Roger
>=20
> ---------------------------------------------------
> Sign Up for free Email at http://ureg.home.net.my/
> ---------------------------------------------------
>=20
> --
> Smarty General Mailing List (http://smarty.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>=20
>

Maximillian Schwanekamp

2005-04-28, 9:01 pm

Abdul-Wahid Paterson wrote:
> {section name=news loop=$result.ITEMS}
> ...{$result.ITEMS.[news].LINK}...
> {/section}


Roger Thomas wrote:
How do I reference, say, the LINK under ITEMS ? Please advise.
[color=darkred]
....[color=darkred]
....

For complex array structures I find it easier to read/write the template
markup by using assign() here, especially if you're going to use
multiple values from the array:

<ul>
{section name=news value=$result.ITEMS}
{assign value=$result.ITEMS[news] var="item"}
<li>
<h3><a href="{$item.LINK}">{$item.TITLE}</a></h3>
<p>{$item.DESCRIPTION}</p>
</li>
{/section}
</ul>

FWIW!
--
Maximillian Von Schwanekamp
http://www.neptunewebworks.com/
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com