2014-09-16 1 views
0

Je veux obtenir une données de tableau à deux dimensions et l'afficher dans un fichier html en utilisant smarty: L'idée est la suivante: ma matrice contient plusieurs tableaux tout le monde contient le nom de la catégorie dans le premier offset et les liens attachés à cette catégorieSmarty affecter et afficher tableau bidimensionnel

1-fichier php

$categories_links = array();//array that contains some catgories name with the attached links 
//some dummy data 
$categorie1="Horror movies"; 
$link11="http://www.movie11.com"; 
$link12="http://www.movie12.com"; 
$link13="http://www.movie13.com"; 
$categories_links[] = array($categorie1, $link11, $link12,$link13); 
$categorie2="Action movies"; 
$link21="http://www.movie21.com"; 
$link22="http://www.movie22.com"; 
$categories_links[] = array($categorie2, $link21, $link22); 
$smarty->assign('categories_links' , $categories_links); 
$smarty->display('file.html'); 

2-fichier html

{foreach key=categorie item=categorie from=$categories_links} 
    foreach key=categorie item=categorie from=categorie} 
<!-- 
    1.display only the first item in every array as the category name 
    2.display the rest as the links attached to the above category 

//--> 
    {/foreach} 
{/foreach} 
+0

Vous devez éditer votre question et mettre quelques exemples de données au format PHP (pas var_dump) –

+0

J'ai ajouté quelques données factices –

Répondre

1

Je Refactor le tableau de données à utiliser le nom de la catégorie comme une clé.

$categories = array(
    'Horror movies' => array(
    'link1', 
    'link2', 
    /... 
), 
    'Action movies' => array(
    'link1', 
    'link2', 
    /... 
), 
); 
$smarty->assign("categories", $categories); 

Ensuite, vous pouvez l'utiliser facilement dans Smarty

{foreach from=$categories key=category item=links} 
    Category: {$category} 
    {foreach from=$links item=link} 
    {$link} 
    {/foreach} 
{/foreach} 

Il est beaucoup plus facile à utiliser de cette façon.

2

en supposant u se Smarty 3 (vous ne l'avez pas mentionné quoi que ce soit à propos de Smarty 2), vous pouvez utiliser le code suivant:

{foreach $categories_links as $categorie} 
<p> 
    {foreach $categorie as $item} 

     {if [email protected]} 
      <strong>Category name: {$item}</strong><br /> 
     {else} 
      {$item} 

     {/if} 
    {/foreach} 
</p> 
{/foreach} 

sortie pour ce sera:

Category name: Horror movies 
http://www.movie11.com http://www.movie12.com http://www.movie13.com 

Category name: Action movies 
http://www.movie21.com http://www.movie22.com 

EDIT

Comme vous mentionné dans le commentaire que vous voulez une solution pour Smarty 2, vous devez utiliser dans votre fichier modèle Smarty:

{foreach key=id item=categorie from=$categories_links} 
    <p> 
     {foreach item=item from=$categorie name=list} 

      {if $smarty.foreach.list.first} 
       <strong>Category name: {$item}</strong><br /> 
      {else} 
       {$item} 

      {/if} 
     {/foreach} 
    </p> 
{/foreach} 

Cela vous donnera la sortie:

Category name: Horror movies 
http://www.movie11.com http://www.movie12.com http://www.movie13.com 

Category name: Action movies 
http://www.movie21.com http://www.movie22.com 

(exactement le même que celui de Smarty 3)

+0

Merci c'est une bonne solution voudrait marquer comme réponse acceptée c'est seulement j'ai besoin d'une solution pour smarty 2.6 ... mon erreur je sais depuis que je n'ai pas mentionné la version smarty dans ma question –

+0

@Amani J'ai édité ma réponse et ajouté la solution pour Smarty 2 –

Questions connexes