2015-02-06 86 views
1

所以我刚刚开始使用mustache.php,我试图通过一个二维数组来循环。我有一个看起来像这样的数组...循环通过二维数组并传递给小胡子模板

$FeedArray = array(3) { [0]=> array(3) { ["entity"]=> string(10) "mail" 
              ["time"]=> string(19) "2015-02-05 05:10:26" 
              ["title"]=> string(0) "what's up?" }   
         [1]=> array(3) { ["entity"]=> string(5) "event" 
              ["time"]=> string(19) "2015-02-05 03:16:54" 
              ["title"]=> string(15) "asfasggasdgasdg" } 
         [2]=> array(3) { ["entity"]=> string(10) "mail" 
              ["time"]=> string(19) "2015-01-11 14:24:08" 
              ["title"]=> string(24) "lunch?" } } 

我想循环尽管它是这样的:

$eventTemplate = file_get_contents('templates/GroupPageEvent.mustache'); 
$postTemplate = file_get_contents('templates/GroupPagePost.mustache'); 

     foreach ($FeedArray as $entity => $row){ 

       if ($row['entity_type']=='mail'){ 
        echo $m->render($postTemplate, $entity); 
       } 

       if ($row['entity_type']=='event'){ 
        echo $m->render($eventTemplate, $entity); 
       } 

     } 

我知道我的模板运作良好和所有。只是没有正确传递子数组($ entity),并且所有输出的模板都是空的。

if $row['entity_type'}==?正在正确读取。

任何帮助表示赞赏。

+0

您定义了'entry',但是读了'entry_type'。将'$ row ['entity_type']'更改为'$ row ['entity']' – 2015-02-06 08:38:43

+0

无关:如果您将模板解析移至'foreach'循环之外,您将获得更好的性能。将前两行更改为:'$ eventTpl = $ m-> loadTemplate(file_get_contents(...))'并将循环内的调用更改为'echo $ eventTpl-> render($ entity)'。 – bobthecow 2015-02-07 05:48:07

+0

@bobthecow ...谢谢你。我给了那一枪。 – ambe5960 2015-02-07 21:58:47

回答

1

这是因为你通过关键看你的渲染功能,$entity包含数组键(0,1,2 ......),你的enity数组存储在$row

foreach ($FeedArray as $entity => $row){ 

你应该这样做的话:

echo $m->render($postTemplate, $row); 

以及在阵列你有 '实体' 的关键不是 'ENTITY_TYPE' 所以改变这种过于:

$row['entity_type']=='mail' 

至:

$row['entity']=='mail' 
+0

非常感谢!回顾过去是有道理的。 – ambe5960 2015-02-06 08:43:59