【问题标题】:Fetch values from an array using nested foreach loop使用嵌套的 foreach 循环从数组中获取值
【发布时间】:2015-04-12 22:57:27
【问题描述】:

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

我拥有的数组是:

 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

但我也希望访问数组最里面的值。谁能告诉我如何创建一个嵌套循环?

【问题讨论】:

  • 看看递归。它将允许您遍历 n 维数组。您应该能够在网上找到教程。

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


【解决方案1】:

如果您现在的数组有多深,您只需在主循环中添加其他 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>";

                         ...

                       } }

                }}
        }
}

【讨论】:

  • 我试过你的方法,但是当我开始循环 for 并且在 category3 之后我开始收到错误警告:为 foreach() 中的每个新类别提供的参数无效
  • 好吧,在索引为 1 的主数组中,最后一个子数组没有这样的字段“类别”。所以你可以确保你所有的数组都有这个字段“类别”或者你首先检查这个字段是否存在。
  • 在索引 1 中我没有,但在索引 2 中我有它,你能告诉我如何解决它..
猜你喜欢
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 2017-06-26
  • 2021-09-06
  • 1970-01-01
  • 2015-07-17
  • 2016-07-25
  • 2018-02-17
相关资源
最近更新 更多