使用嵌套的foreach循环从数组中获取值

时间:2015-02-12 09:17:38

标签: php arrays for-loop multidimensional-array foreach

我有一个长数组,我希望从中获取所有值并将其存储在一个单独的变量中,并将每个值存储在数据库中。

我拥有的数组是:

 Array
(
    [success] => 1
    [categories] => Array
        (
            [0] => Array
                (
                    [category_id] => 39
                    [name] => BAGS
                    [categories] => Array
                        (
                            [0] => Array
                                (
                                    [category_id] => 59
                                    [name] => Handcrafted Purses
                                    [categories] => 
                                    [status] => 1
                                )

                            [1] => Array
                                (
                                    [category_id] => 45
                                    [parent_id] => 39
                                    [name] => Laptop Bag
                                    [categories] => 
                                    [status] => 1
                                )
                        )
                    [status] => 1
                )
            [1] => Array
                (
                    [category_id] => 40
                    [name] => BOXERS
                    [categories] => Array
                        (
                            [0] => Array
                                (
                                    [category_id] => 56
                                    [parent_id] => 40
                                    [name] =>  Women Boxers
                                    [status] => 1
                                )
                        )
                    [status] => 1
                )

            [2] => Array
                (
                    [category_id] => 91
                    [parent_id] => 0
                    [name] => Business Corporate
                    [image] => 
                    [categories] => Array
                        (
                            [0] => Array
                                (
                                    [category_id] => 92
                                    [parent_id] => 91
                                    [name] => Bags
                                    [image] => 
                                    [categories] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [category_id] => 93
                                                    [parent_id] => 92
                                                    [name] => Potli Bags
                                                    [image] => 
                                                    [categories] => 
                                                    [status] => 1
                                                )

                                        )

                                    [status] => 1
                                )

                        )

                    [status] => 1
                )

            [3] => Array
                (
                    [category_id] => 60
                    [parent_id] => 0
                    [name] => Business Corporates
                    [image] => 
                    [categories] => Array
                        (
                            [0] => Array
                                (
                                    [category_id] => 90
                                    [parent_id] => 60
                                    [name] => Art Cushions
                                    [image] => 
                                    [categories] => 
                                    [status] => 1
                                )

                            [1] => Array
                                (
                                    [category_id] => 67
                                    [parent_id] => 60
                                    [name] => Bags
                                    [image] => 
                                    [categories] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [category_id] => 77
                                                    [parent_id] => 67
                                                    [name] => Potli Bags
                                                    [image] => 
                                                    [categories] => 
                                                    [status] => 1
                                                )

                                            [1] => Array
                                                (
                                                    [category_id] => 76
                                                    [parent_id] => 67
                                                    [name] => Smart Bags
                                                    [image] => 
                                                    [categories] => 
                                                    [status] => 1
                                                )
                                        )

                                    [status] => 1
                                )

                            [2] => Array
                                (
                                    [category_id] => 86
                                    [parent_id] => 60
                                    [name] => Fashion Jewellery
                                    [image] => 
                                    [categories] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [category_id] => 88
                                                    [parent_id] => 86
                                                    [name] => Coming Soon - Products Uploading
                                                    [image] => 
                                                    [categories] => 
                                                    [status] => 1
                                                )

                                        )

                                    [status] => 1
                                )

                            [3] => Array
                                (
                                    [category_id] => 61
                                    [parent_id] => 60
                                    [name] => Men Footwear
                                    [image] => 
                                    [categories] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [category_id] => 65
                                                    [parent_id] => 61
                                                    [name] => Canvas Loafers
                                                    [image] => 
                                                    [categories] => 
                                                    [status] => 1
                                                )

                                        )

                                    [status] => 1
                                )

                            [4] => Array
                                (
                                    [category_id] => 87
                                    [parent_id] => 60
                                    [name] => Shawls And Stoles
                                    [image] => 
                                    [categories] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [category_id] => 89
                                                    [parent_id] => 87
                                                    [name] => Coming Soon - Products Uploading
                                                    [image] => 
                                                    [categories] => 
                                                    [status] => 1
                                                )

                                        )

                                    [status] => 1
                                )
                        )

                    [status] => 1
                )

            [4] => Array
                (
                    [category_id] => 15
                    [parent_id] => 0
                    [name] => ETHNIC WEAR 
                    [image] => 
                    [categories] => Array
                        (
                            [0] => Array
                                (
                                    [category_id] => 28
                                    [parent_id] => 15
                                    [name] => Designer Lehngas
                                    [image] => 
                                    [categories] => 
                                    [status] => 1
                                )

                            [1] => Array
                                (
                                    [category_id] => 2
                                    [parent_id] => 15
                                    [name] => Suits
                                    [image] => 
                                    [categories] => 
                                    [status] => 1
                                )
                        )

                    [status] => 1
                )
        )
)

我可以使用以下代码获取此数组的外部值:

if (!empty($array)) 
    {
        foreach ($array['categories'] as $category) 
            {
                echo $category['category_id'];
                echo "<br>";
            }
    }

我得到了值:

39
40
91
60
15
16
38
57

但我也希望访问数组的最内层值。任何人都可以告诉我如何创建嵌套循环吗?

1 个答案:

答案 0 :(得分:0)

如果现在你的数组有多深,你只需在主循环中添加其他foreach循环。

if (!empty($array)) 
{
    foreach ($array['categories'] as $category) 
        {
            echo $category['category_id'];
            echo "<br>";

            if(isset($category['categories'])){
            foreach($category['categories'] as $category2)
                {
                echo $category2['category_id'];
                echo "<br>";

                     if (isset($category2['categories'])){
                     foreach($category2['categories'] as $category3)
                       {
                         echo $category3['category_id'];
                         echo "<br>";

                         ...

                       } }

                }}
        }
}
相关问题