Php 将多维数组转换为列表的最快方法?
我有以下数组:Php 将多维数组转换为列表的最快方法?,php,Php,我有以下数组: Array ( [0] => stdClass Object ( [categoryid] => 60 [categoryName] => Parent Category A [categoryParent] => ) [1] => stdClass Object ( [categoryi
Array
(
[0] => stdClass Object
(
[categoryid] => 60
[categoryName] => Parent Category A
[categoryParent] =>
)
[1] => stdClass Object
(
[categoryid] => 65
[categoryName] => Parent Category B
[categoryParent] =>
)
[2] => stdClass Object
(
[categoryid] => 68
[categoryName] => Child Category A
[categoryParent] => 65
)
[3] => stdClass Object
(
[categoryid] => 69
[categoryName] => Super Child Category A
[categoryParent] => 68
)
)
我需要这样一个列表:
- 父类别A
- 父类别B
- A类儿童
- 超级儿童A类
- A类儿童
函数mylist($a,$parent=''){
function mylist( $a, $parent='') {
$r = '' ;
foreach ( $a as $i ) {
if ($i['categoryParent'] == $parent ) {
$r = $r . "<li>" . $i['categoryName'] . mylist( $a, $i['categoryid'] ) . "</li>";
}
}
return ($r==''?'':"<ul>". $r . "</ul>");
}
$r='';
foreach($a作为$i){
如果($i['categoryParent']==$parent){
$r=$r.“”$i['categoryName'].mylist($a$i['categoryid'])。“ ”;
}
}
回报($r=''?“”$r.
”);
}
函数mylist($a,$parent=''){
$r='';
foreach($a作为$i){
如果($i['categoryParent']==$parent){
$r=$r.“”$i['categoryName'].mylist($a$i['categoryid'])。“ ”;
}
}
回报($r=''?“”$r.
”);
}
我建议保留一个包含父项的数组,并将子项添加到元素自己的数组中。(与您的树相似)
您可以通过以下示例读取此元素:
<?php
BuildList($arrayParent, 0);
function BuildList($arrayElements, $depth)
{
foreach($arrayElements as $element)
{
echo str_repeat(" ", $depth) . $element->categoryName;
$depth++;
if(count($element->subCategory) > 0)
$depth = BuildList($element->subCategory, $depth);
return $depth;
}
}
?>
我建议保留一个包含父项的数组,并将子项添加到元素自己的数组中。(与您的树相似) 您可以通过以下示例读取此元素:
<?php
BuildList($arrayParent, 0);
function BuildList($arrayElements, $depth)
{
foreach($arrayElements as $element)
{
echo str_repeat(" ", $depth) . $element->categoryName;
$depth++;
if(count($element->subCategory) > 0)
$depth = BuildList($element->subCategory, $depth);
return $depth;
}
}
?>
试试这个:
function htmlList($array, $parent = null){
$str = '<ul>';
foreach($array as $object){
if(!$parent){
if(!$object->categoryParent){
$str .= '<li>' . $object->categoryName;
$str .= htmlList($array, $object->categoryid);
$str .= '</li>';
}
}
}
return $str .= '</ul>';
}
echo htmlList($yourArray);
函数htmlist($array,$parent=null){
$str='- ';
foreach($array作为$object){
如果(!$parent){
如果(!$object->categoryParent){
$str.='
- 。$object->categoryName; $str.=htmlist($array,$object->categoryid); $str.=' '; } } } 返回$str.='
function htmlList($array, $parent = null){
$str = '<ul>';
foreach($array as $object){
if(!$parent){
if(!$object->categoryParent){
$str .= '<li>' . $object->categoryName;
$str .= htmlList($array, $object->categoryid);
$str .= '</li>';
}
}
}
return $str .= '</ul>';
}
echo htmlList($yourArray);
函数htmlist($array,$parent=null){
$str='- ';
foreach($array作为$object){
如果(!$parent){
如果(!$object->categoryParent){
$str.='
- 。$object->categoryName; $str.=htmlist($array,$object->categoryid); $str.=' '; } } } 返回$str.='
使用递归foreach循环。我首先要确保您有一个实际的树(即展平它),这将使处理更容易。因此,具有
categoryParent
的对象映射为子对象数组。然后使用一个foreach循环,如果存在的话,它会向下抓取每个循环的子循环。使用递归foreach循环。我会首先确保你有一个实际的树(即展平它),这将使它更容易处理。因此,具有categoryParent
的对象映射为子对象数组。然后使用一个foreach循环,如果存在,则向下抓取每个循环的子循环。