2013-03-08 84 views
0

我在PHP中的数组做的print_r($面包屑)PHP Array对HTML的层次结构(多面包屑路径)

Array (
    [url] => /category/ 
    [text] => Category 
) 
Array (
    [url] => /category/subcategory/ 
    [text] => Subcategory 
) 
Array (
    [url] => /category/subcategory/subsubcategory/ 
    [text] => Subsubcategory 
) 

我想这个面包屑显示当看起来像这样

Category > Subcategory > Subsubcategory 

Google docs的HTML应该是这样的:

<div xmlns:v="http://rdf.data-vocabulary.org/#"> 
    <span typeof="v:Breadcrumb"> 
    <a href="/category/" rel="v:url" property="v:title"> 
     Category 
    </a> › 
    <span rel="v:child"> 
     <span typeof="v:Breadcrumb"> 
     <a href="/category/subcategory/" rel="v:url" property="v:title"> 
      Subcategory 
     </a> › 
     <span rel="v:child">   
      <span typeof="v:Breadcrumb"> 
      <a href="/category/subcategory/subsubcategory/" rel="v:url" property="v:title"> 
       Subsubcategory 
      </a> ›   
      </span> 
     </span> 
     </span> 
    </span> 
    </span> 
</div> 

如何从PHP数组去到HTML?

我已经看了other answers,但他们没有我的情况下工作

+0

听起来你后[PHP的的DomDocument(HTTP ://php.net/manual/en/class.domdocument.php)。如果您的初始数组的结构与您打算输出的方式相同,那么您将有更容易的时间。现在,你将不得不计算在“文本”内的“子”的出现次数 – juco 2013-03-08 10:47:15

回答

1

这是我怎么会去这样的:

的PHP:

<?php 
    $breadcrumb = array(
     array(
      'url' => '/category/', 
      'text' => 'Category' 
     ), 
     array(
      'url' => '/category/subcategory/', 
      'text' => 'Subcategory' 
     ), 
     array(
      'url' => '/category/subcategory/subcategory', 
      'text' => 'Subsubcategory' 
     ) 
    ); 
    $children = count($breadcrumb) - 1; 
?> 

显示标记:

<div xmlns:v="http://rdf.data-vocabulary.org/#"> 
    <span typeof="v:Breadcrumb"> 
     <?php for ($i = 0; $i < count($breadcrumb); $i++) : ?> 
     <?php if ($i == 0) : ?> 
     <a href="<?php echo $breadcrumb[0]['url']; ?>" rel="v:url" property="v:title"><?php echo $breadcrumb[0]['text']; ?></a> › 
     <?php else : ?> 
     <span rel="v:child"> 
      <span typeof="v:Breadcrumb"> 
       <a href="<?php echo $breadcrumb[$i]['url']; ?>" rel="v:url" property="v:title"><?php echo $breadcrumb[$i]['text']; ?></a> › 
     <?php endif; ?> 
     <?php endfor; ?> 
     <?php echo str_repeat("</span>\r\n</span>\r\n", $children); ?> 
    </span> 
</div> 

如果需要,这种方法还可以允许更深的子类别。

希望它可以帮助

更新显示代码:

<div xmlns:v="http://rdf.data-vocabulary.org/#"> 
    <span typeof="v:Breadcrumb"> 
     <?php for ($i = 0; $i < count($breadcrumb); $i++) : ?> 
     <?php if ($i == 0) : ?> 
     <a href="<?php echo $breadcrumb[0]['url']; ?>" rel="v:url" property="v:title"><?php echo $breadcrumb[0]['text']; ?></a> › 
     <?php else : ?> 
     <span rel="v:child"> 
      <span typeof="v:Breadcrumb"> 
       <a href="<?php echo $breadcrumb[$i]['url']; ?>" rel="v:url" property="v:title"><?php echo $breadcrumb[$i]['text']; ?></a><?php if ($i < $children):?> › <?php endif; ?> 
     <?php endif; ?> 
     <?php endfor; ?> 
     <?php echo str_repeat("</span>\r\n</span>\r\n", $children); ?> 
    </span> 
</div> 

上面的代码从修剪结束的最后>符号:)

+0

我认为需要一个递归函数,但你的答案实际上工作。不是为你感到惊讶,但对我来说:)谢谢你! – Niska 2013-03-08 12:36:15