• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 237
  • Last Modified:

Using array in Smarty for PHP

Let's say i have the following array:

$data['my'][] = array('one' =>  "mydata1"
                                ,'two' =>  "mydata2"
                               ,'three' => array('threearray1' => array("threearraydata1"
                                                                                             ,"threearraydata2"
                                                                                             )
                                                        ,'threearray2'     => array("threearray2data1"
                                                                                                 ,"threearray2data2"
                                                                                                 ,"threearray2data3"
                                                                     )
                                            )
                       );


$data['my'][] = array('oneb' =>  "mydata1b"
                                ,'twob' =>  "mydata2b"
                               ,'threeb' => array('threearray1b' => array("threearraydata1b"
                                                                                             ,"threearraydata2b"
                                                                                             )
                                            )
                       );

now in smarty page I wrote something like:
$smarty->assign ("variable1", $data['my']);

if i want to see something like:
<div>
<p>mydata1</p>
<p>mydata2</p>
<li>
<ul>threearray1
    <li>
        <ul>threearraydata1</ul>
      <ul>threearraydata2</ul>
    </li>
</ul>
<ul>threearray2
    <li>
      <ul>threearray2data1</ul>
      <ul>threearray2data2</ul>
      <ul>threearray2data3</ul>
    </li>
</ul>
</li>
</div>

<div>
<p>mydata1b</p>
<p>mydata2b</p>
<li>
<ul>threearray1b
    <li>
        <ul>threearraydata1b</ul>
      <ul>threearraydata2b</ul>
    </li>
</ul>
</li>
</div>


how should I write the template file?
0
edyonline
Asked:
edyonline
  • 2
1 Solution
 
f_o_o_k_yCommented:
Do you really need to name it:
$data['my'][] = array('one' =>  "mydata1"
                                ,'two' =>  "mydata2"
                               ,'three' => array('threearray1' => array("threearraydata1"
                                                                                             ,"threearraydata2"
                                                                                             )
                                                        ,'threearray2'     => array("threearray2data1"
                                                                                                 ,"threearray2data2"
                                                                                                 ,"threearray2data3"
                                                                     )
                                            )
                       );
$data['my'][] = array('oneb' =>  "mydata1b"
                                ,'twob' =>  "mydata2b"
                               ,'threeb' => array('threearray1b' => array("threearraydata1b"
                                                                                             ,"threearraydata2b"
                                                                                             )
                                            )
                       );


Maybe you can:
$data['my'][] = array('one' =>  "mydata1"
                                ,'two' =>  "mydata2"
                               ,'three' => array('threearray1' => array("threearraydata1"
                                                                                             ,"threearraydata2"
                                                                                             )
                                                        ,'threearray2'     => array("threearray2data1"
                                                                                                 ,"threearray2data2"
                                                                                                 ,"threearray2data3"
                                                                     )
                                            )
                       );

$data['my'][] = array('one' =>  "mydata1b"
                                ,'two' =>  "mydata2b"
                               ,'three' => array('threearray1' => array("threearraydata1b"
                                                                                             ,"threearraydata2b"
                                                                                             )
                                            )
                       );

or do not name it at all
$data['my'][] = array( "mydata1"
                                ,"mydata2"
                               ,array( array("threearraydata1"
                                                                                             ,"threearraydata2"
                                                                                             )
                                                        , array("threearray2data1"
                                                                                                 ,"threearray2data2"
                                                                                                 ,"threearray2data3"
                                                                     )
                                            )
                       );


$data['my'][] = array("mydata1b"
                                ,"mydata2b"
                               ,array( array("threearraydata1b"
                                                                                             ,"threearraydata2b"
                                                                                             )
                                            )
                       );
0
 
edyonlineAuthor Commented:
i can deal with:

$data['my'][] = array('one' =>  "mydata1"
                                ,'two' =>  "mydata2"
                               ,'three' => array('threearray1' => array("threearraydata1"
                                                                                             ,"threearraydata2"
                                                                                             )
                                                        ,'threearray2'     => array("threearray2data1"
                                                                                                 ,"threearray2data2"
                                                                                                 ,"threearray2data3"
                                                                     )
                                            )
                       );
$data['my'][] = array('one' =>  "mydata1b"
                                ,'two' =>  "mydata2b"
                               ,'three' => array('threearray1b' => array("threearraydata1b"
                                                                                             ,"threearraydata2b"
                                                                                             )
                                            )
                       );

then what would be your suggested template smarty file look like?
0
 
f_o_o_k_yCommented:

{foreach from=$variable1 item="entry"}
<div>
  <p>{$entry.one}</p>
  <p>{$entry.two}</p>
  <li>
    {foreach from=$entry.three key=k item="three"}
    <ul> {$k}
      <li>
      {foreach from=$three item="threeData"}
        <ul>
          {$threeData}
        </ul>
      {/foreach}
      </li>
    </ul>
    {/foreach}
  </li>
</div>

{/foreach}
0

Featured Post

Become an Android App Developer

Ready to kick start your career in 2018? Learn how to build an Android app in January’s Course of the Month and open the door to new opportunities.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now