Php 从多维数组生成HTML
我想用php生成如下HTML代码:Php 从多维数组生成HTML,php,html,arrays,multidimensional-array,Php,Html,Arrays,Multidimensional Array,我想用php生成如下HTML代码: <li id="821">Accessoires tablette et cellulaire <ul> <li id="426">Accessoires pour cellulaire <ul> <li id="675">Supports et stations d'accueil</li> <li id="680">C
<li id="821">Accessoires tablette et cellulaire
<ul>
<li id="426">Accessoires pour cellulaire
<ul>
<li id="675">Supports et stations d'accueil</li>
<li id="680">Chargeurs maison et automobile
<ul>
<li id="689">Chargeurs pour cellulaire</li>
<li id="690">Chargeurs pour téléphone intelligent</li>
</ul>
</li>
<li id="681" >Pellicules protectrices</li>
<li id="682" >Câbles et adaptateurs pour cellulaire</li>
<li id="683" >Autres accessoires</li>
<li id="684" >Lentilles pour iPhone</li>
<li id="687" >Étuis pour cellulaire</li>
<li id="688" >Accessoires Bluetooth et mains libres</li>
</ul>
<li id="132">Accessoires - iPod et lecteur MP3
<ul>
<li id="238" >Émetteurs FM</li>
<li id="254" >Étuis protecteurs et sacs de transport</li>
<li id="272" >Accessoires</li>
<li id="356" >Lecteurs MP3</li>
</ul>
</li>
<li id="347">Accessoires pour tablette
<ul>
<li id="481" >Stylos et clavier</li>
<li id="482" >Câbles et adaptateurs</li>
<li id="486" >Chargeurs maison et automobile</li>
<li id="489" >Étuis protecteurs et sacs de transport</li>
<li id="485" >Supports et stations d'accueil</li>
</ul>
</li>
</ul>
</li>
附属表格和赛璐珞
-
赛璐珞辅料
- 支持et站数据采集 汽车制造商
- 保护者和运输部门 附件
- MP3
- C–bles et adaptateurs 汽车制造商
- 保护者和运输部门
- 支持et站数据采集
-
赛璐珞酒
智能手机充电器
-
Émetteurs FM
-
Stylos和clavier
文本必须是数组中的名称
我需要使用从数组到的所有子元素
现在我有这样的东西:
function generate_tree($item, $key)
{
if ($key == "category_id"){
echo "<li id=\"$item\">";
}
if ($key == "name"){
echo "$item</li>\n";
}
}
array_walk_recursive($cat, 'generate_tree');
<li id="18">Produits</li>
<li id="821">Accessoires tablette et cellulaire</li>
<li id="426">Accessoires pour cellulaire</li>
<li id="675">Supports et stations d'accueil</li>
<li id="680">Chargeurs maison et automobile</li>
<li id="689">Chargeurs pour cellulaire</li>
<li id="690">Chargeurs pour téléphone intelligent</li>
<li id="681">Pellicules protectrices</li>
<li id="682">Câbles et adaptateurs pour cellulaire</li>
<li id="683">Autres accessoires</li>
<li id="684">Lentilles pour iPhone</li>
<li id="687">Étuis pour cellulaire</li>
<li id="688">Accessoires Bluetooth et mains libres</li>
<li id="132">Accessoires - iPod et lecteur MP3</li>
<li id="238">Émetteurs FM</li>
<li id="254">Étuis protecteurs et sacs de transport</li>
<li id="272">Accessoires</li>
<li id="356">Lecteurs MP3</li>
<li id="347">Accessoires pour tablette</li>
<li id="481">Stylos et clavier</li>
<li id="482">Câbles et adaptateurs</li>
<li id="486">Chargeurs maison et automobile</li>
<li id="489">Étuis protecteurs et sacs de transport</li>
<li id="485">Supports et stations d'accueil</li>
<li id="136">Alarmes et sécurité</li>
<li id="825">Domotique</li>
<li id="828">Capteur de température</li>
<li id="618">Carillon de porte et accessoires</li>
<li id="826">Contrôle d'électroménager et de luminaire</li>
函数生成树($item,$key)
{
如果($key==“类别id”){
echo“”;
}
如果($key==“name”){
回显“$item \n”;
}
}
数组_walk_recursive($cat,'generate_tree');
但此示例代码将所有项放在同一级别,如下所示:
function generate_tree($item, $key)
{
if ($key == "category_id"){
echo "<li id=\"$item\">";
}
if ($key == "name"){
echo "$item</li>\n";
}
}
array_walk_recursive($cat, 'generate_tree');
<li id="18">Produits</li>
<li id="821">Accessoires tablette et cellulaire</li>
<li id="426">Accessoires pour cellulaire</li>
<li id="675">Supports et stations d'accueil</li>
<li id="680">Chargeurs maison et automobile</li>
<li id="689">Chargeurs pour cellulaire</li>
<li id="690">Chargeurs pour téléphone intelligent</li>
<li id="681">Pellicules protectrices</li>
<li id="682">Câbles et adaptateurs pour cellulaire</li>
<li id="683">Autres accessoires</li>
<li id="684">Lentilles pour iPhone</li>
<li id="687">Étuis pour cellulaire</li>
<li id="688">Accessoires Bluetooth et mains libres</li>
<li id="132">Accessoires - iPod et lecteur MP3</li>
<li id="238">Émetteurs FM</li>
<li id="254">Étuis protecteurs et sacs de transport</li>
<li id="272">Accessoires</li>
<li id="356">Lecteurs MP3</li>
<li id="347">Accessoires pour tablette</li>
<li id="481">Stylos et clavier</li>
<li id="482">Câbles et adaptateurs</li>
<li id="486">Chargeurs maison et automobile</li>
<li id="489">Étuis protecteurs et sacs de transport</li>
<li id="485">Supports et stations d'accueil</li>
<li id="136">Alarmes et sécurité</li>
<li id="825">Domotique</li>
<li id="828">Capteur de température</li>
<li id="618">Carillon de porte et accessoires</li>
<li id="826">Contrôle d'électroménager et de luminaire</li>
产品
附属表格和赛璐珞
赛璐珞辅料
支持et站数据采集
汽车制造商
赛璐珞酒
智能手机充电器
保护膜
赛璐珞舞曲和改编曲
Autres附件
iPhone上的小扁豆
赛璐珞舞曲
附件蓝牙和主接线盒
附件-iPod和Lecter MP3
Émetteurs FM
保护者和运输部门
附件
MP3
桌子的附件
Stylos和clavier
C–bles et adaptateurs
汽车制造商
保护者和运输部门
支持et站数据采集
报警和安全提示
多莫蒂克
温度船长
船闸及附属设施
电气和照明设备控制
如何使用
生成多个级别?对于您的情况,递归函数似乎是最好的。以下可能会起到以下作用:
function recursion($level, $data)
{
if($level < 10)
{
foreach($data as $key => $value)
{
//echo <li>
if(!empty($value['children']))
{
//echo <ul> here
recursion($level+1. $value)
//echo </ul> here
}
//echo </li> here
}
}
}
函数递归($level,$data)
{
如果($10级以下)
{
foreach($key=>$value形式的数据)
{
//回声
如果(!empty($value['children']))
{
//回声这里
递归($level+1.$value)
//回声
这里
}
//回声 在这里
}
}
}
这可以防止编写重复的代码,这是一种相当常见的做法。我还添加了一个变量$level和一个检查,以防止太深,我总是添加它来减少无限递归的可能性
希望对您有所帮助。下面是一个适合您的数据的递归示例:
<?php
$var1 = array(
'0' => array(
'one' => '426', 'two' => 'alpha', 'three' => array(
'0' => array(
'one' => '675', 'two' => 'beta', 'three' => array() ),
'1' => array(
'one' => '680', 'two' => 'gamma', 'three' => array(
'0' => array(
'one' => '689', 'two' => 'delta', 'three' => array() ),
'1' => array(
'one' => '690', 'two' => 'epsilon', 'three' => array() ), ) ),
'2' => array(
'one' => '681', 'two' => 'zeta', 'three' => array() ),
'3' => array(
'one' => '682', 'two' => 'eta', 'three' => array() ) ) ) );
doit($var1, '');
function doit($a1, $indent) {
if (count($a1) == 0) return;
echo "$indent<ul>\n";
foreach ($a1 as $a2) {
$v1 = $a2['one'];
$v2 = $a2['two'];
echo " $indent<li id=\"$v1\">$v2</li>\n";
doit($a2['three'], " $indent"); }
echo "$indent</ul>\n";
}
?>
编辑:使其通过HTML验证:
()
函数doit($a1,$indent){
如果(计数($a1)==0)返回;
echo“\n$indent\n”;
foreach($a1为$a2){
$v1=$a2['one'];
$v2=$a2['two'];
回显“$indent- $v2”;
doit($a2['three',“$indent”);
回音“
\n”}
回声“$indent
”;
}
好的,但您的问题是什么?如何从我在文章中介绍的数组示例中在php中生成这样的HTML代码。您需要一些逻辑来说明什么地方去了……即。什么是顶级页面,您如何识别它?我认为这种方式是更好的方法!非常好的方法,谢谢!如果这解决了你的问题,你介意把它作为答案吗?谢谢。谢谢你的帮助!