2012-05-29 126 views
1

我有以下multidim數組;在Smarty中獲取多維數組中的特定數組

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

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

    ) 

我們是很新的給Smarty和其經常對接向後辦法的事情,我不知道從哪裏開始,如果我想獲得基於對數組的id_feature值特定陣列。

也就是說,我需要將一個變量放入一個變量中,例如對於id_feature包含「9」的數組。

我該怎麼辦?

+1

只是一個建議:爲什麼不把'id_feature'作爲父數組的關鍵? – Jon

+0

喜歡,但是我不能改變數組的內容,因爲它是由Prestashop生成的 - 而且我只是想製作一個主題,而不是改變核心的行爲。 :) –

回答

1

試試這個智者代碼:

{foreach from=$features item=f} 

    {if $f.id_feature eq 9} 

    {$f.value} 

    {$f.id_feature} 

    {/if} 

{/foreach} 
1

使用in_array怎麼樣?

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

我不認爲這是直接在Smarty中工作;可以? –

+0

aww多數民衆贊成在一個恥辱我不知道你如何能夠以聰明的方式調整此.. – zaw

+0

這是可能的Smarty {php}標籤內使用PHP代碼。 – Salman

1

前提是你分配這樣的事情在PHP中:

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

在Smarty的模板,{$features[0].value}會給你Foo

您也可以使用{for}{foreach}遍歷數組 - 檢查文檔http://www.smarty.net/docsv2/en/

甚至使用{php}標籤直接寫PHP:

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