2015-02-12 79 views
1

我有一个很长的数组,我希望从中获取所有值并将其存储在一个单独的变量中,并将每个值存储在数据库中。使用嵌套的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 

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

+0

看看递归。它将允许您遍历n维数组。你应该能够在网上找到教程。 – AnotherGuy 2015-02-12 09:27:47

回答

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>"; 

         ... 

         } } 

       }} 
     } 
} 
+0

我试过你的方式,但当我开始循环和类别3后,我开始得到一个错误警告:无效的参数为foreach()为每个新类别提供 – sammy 2015-02-12 09:40:26

+0

嗯,在您的主数组索引1,最后一个子数组没有这样的领域“类别”。所以你可以确保你所有的数组都有这个字段“类别”,或者你首先检查这个字段是否存在。 – Eddi 2015-02-12 09:57:15

+0

在索引1我没有,但在索引2我确实拥有它,你可以告诉我如何我可以整理出来.. – sammy 2015-02-12 10:06:39