按main和submain设置多维数组的样式


Style a Multidimencional Array by main and submain

我有以下"问题"。。。挠头几个小时后,我想不通了。。所以我们开始。。。我以前使用过数组的,但只是一个简单数组的

$arr = array('1', '2', '3',[...]);

我可以应付这种数组,就在几天前,我开始学习多维数组的。。。他们应该被称为"多维噩梦"。。。无论如何,我从SQL中得到了一个按"名称"排序的多维数组。。。无论如何。。。该数组需要组织,感谢stackoverflow的一位名叫Edakos的用户,我的数组是由主猫和它的子猫组织的。。。我的数组现在看起来是这样的。。。

 Array
(
    [10] => stdClass Object
        (
            [category_id] => 10
            [category_name] => Main Category
            [category_parent_id] => 0
            [category_child_id] => 10
            [children] => Array
                (
                    [196] => stdClass Object
                        (
                            [category_id] => 196
                            [category_name] => Sub Category 1
                            [category_parent_id] => 10
                            [category_child_id] => 196
                            [children] => Array
                                (
                                )
                        )
                    [198] => stdClass Object
                        (
                            [category_id] => 196
                            [category_name] => Sub Category 2
                            [category_parent_id] => 10
                            [category_child_id] => 198
                            [children] => Array
                                (
                                )
                        )
    [.....]
);

现在我尝试设计这个数组的样式。。。

foreach($tree as $cats => $info){
     echo '<span> ID: ' . $cats . '</span><br>';
        foreach($info as $k => $v){
            echo '<span style="margin-left:10px; color:red;">' . $v ['category_name'] . ' </span><br>';
        }
}

//$tree包含上面显示的完整数组。。。

现在的结果就像

ID: 10
1
M
0
1
ID: 1
1
M
0
1 

其中ID:是可以的主类别的ID号。。。数据是主类别的数据,如ID、名称、父ID、子ID,这是主猫ID…

阵列看起来像这个

[10] => stdClass Object
            (
                [category_id] => 10
                [category_name] => Main Category
                [category_parent_id] => 0
                [category_child_id] => 10
                [children] => Array
                    (....

所以据我所知是[KEY]=>ARRAY(KEY=>val,KEY=>val…and son…直到数组中包含子类别的关键子…

所以,正如我在代码中所写:

foreach($info as $k => $v){
echo '<span style="margin-left:10px; color:red;">' . $v ['category_name'] . ' </span><br>';
            }

我应该能够得到第一个数组的名称,它是我的主要类别,在这种情况下是"主要类别"。。。但我只收到了M…这是我迷路的地方所以无论如何。。。以下应该是获取子类别。。。为此我有这个。。。

    foreach($info as $k => $v){
    echo '<span style="margin-left:10px; color:red;">' . $v ['category_name'] . ' </span>
         foreach ($k[children] as $sk => $sv){
    echo '<span style="margin-left:10px; color:green;">' . $sv ['category_name'] . ' </span>
}
<br>';
}

然后我什么都没得到。。。

最后的想法是得到以下

Main cat 1
   |_Sub Cat 2
   |_Sub Cat 4
   |_Sub Cat 6
Main Cat 2
   |_Sub Name 2
   |_Sub Names 3
[... and son ] ...

我必须注意,这是我第一次尝试使用多维数组,任何帮助都将不胜感激。

感谢您花时间阅读这篇多维噩梦

首先,迭代主数组,然后迭代子对象数组。您在这里处理的是对象,因此表示法是$object->variablename,而不是$array["variablename"]。

foreach ( $tree as $cats => info){
    echo '<span> cat: ' . $info->category_name. '</span><br>';
    foreach ($info->children as $child){
        echo '<span>' . $child->category_name . '</span>';
    }
}