2012-05-29 6 views
1

J'ai le tableau multidim suivant;Récupère un tableau spécifique dans un tableau multidimensionnel dans Smarty

[features] => Array 
    (
     [0] => Array 
      (
       [value] => Foo 
       [id_feature] => 9 
      ) 

     [1] => Array 
      (
       [value] => Bar 
       [id_feature] => 10 
      ) 

    ) 

Être très nouveau pour Smarty et son approche souvent bout à bout à l'envers des choses, je n'ai aucune idée où commencer, si je voulais obtenir un tableau spécifique en fonction de la valeur de id_feature de ce tableau. C'est-à-dire que je dois mettre dans une variable le tableau qui contient par exemple "9" pour id_feature.

Comment procéder?

+1

Juste une suggestion: pourquoi ne pas faire de 'id_feature' la clé pour le tableau parent? – Jon

+0

J'adore, mais je ne peux pas changer le contenu du tableau, car il est généré par Prestashop - et je cherche simplement à faire un thème plus que changer le comportement du noyau. :) –

Répondre

1

Essayez ce code Smarty:

{foreach from=$features item=f} 

    {if $f.id_feature eq 9} 

    {$f.value} 

    {$f.id_feature} 

    {/if} 

{/foreach} 
1

Qu'en est-il de l'utilisation de in_array?

<?php 
function getArray($search) { 
    foreach($features as $val) { 
     if(in_array($search, $val)){ 
     return $val; 
     } 
    } 
} 
?> 
+0

Je ne pense pas que cela fonctionne directement dans Smarty; le fait-il? –

+0

aww c'est une honte je ne suis pas sûr de la façon dont vous pouvez tordre cela de façon intelligente .. – zaw

+0

Il est possible d'utiliser des codes PHP dans Smarty {php} tag. – Salman

1

Pourvu que vous avez attribué quelque chose comme ça en PHP:

$features = array( 
    array("value" => "Foo", "id_feature" => 9), 
    array("value" => "Bar", "id_feature" => 10)); 
$smarty->assign('features', $features); 

Dans Smarty, {$features[0].value} vous donnera Foo.

Vous pouvez également parcourir le tableau en utilisant {for} ou {foreach} - consultez la documentation http://www.smarty.net/docsv2/en/

Ou encore utiliser la balise {php} pour écrire PHP directement:

{php} 
    global $features; 
    print_r($features); 
{/php} 
Questions connexes