【问题标题】:How to iterate 2 dimensional array in laravel blade template engine如何在 laravel 刀片模板引擎中迭代二维数组
【发布时间】:2017-04-16 05:10:28
【问题描述】:

我正在尝试在 laravel 5.3 的刀片模板引擎中显示数据。我在做 dd($tree) 时有一个以下格式的二维数组:

array:6 [▼
  "class" => "Green"
  "user_name" => "Nitish"
  "user_loc" => "Delhi"
  "user_id" => 1
  "user_blockclass" => null
  "child" => array:4 [▼
      0 => array:6 [▼
          "class" => "Green"
          "user_name" => null
          "user_loc" => null
          "user_id" => 1
          "user_blockclass" => "fst"
          "child" => array:1 [▼
               0 => array:5 [▼
                   0 => array:5 [▼
                     "class" => "Green"
                     "user_name" => "pandey"
                     "user_loc" => "sdgfsjd"
                     "user_id" => 6
                     "user_blockclass" => "fst"
                   ]
                   1 => array:5 [▼
                      "class" => "Green"
                      "user_name" => "chaku"
                      "user_loc" => "sdgjs"
                      "user_id" => 7
                      "user_blockclass" => "snd"
                   ]
                   2 => array:5 [▼
                      "class" => "Green"
                      "user_name" => "iks"
                      "user_loc" => "sjkdfhkjs"
                      "user_id" => 8
                      "user_blockclass" => "trd"
                   ]
               ]
       ]
 ]
1 => array:6 [▶]
2 => array:6 [▶]
3 => array:6 [▶]

我正在尝试像这样获取这些数据:

 <div class="tree-content">
<!-- Level 1 -->
<div class="level-block">
    <div class="levels level-1">
        <span class="{{ $tree['class'] }}"><i class="fa fa-user"></i></span>
        <div class="mem-info">
            <span class="bold">{{ $tree['user_name'] }}</span>
            <span>{{ $tree['user_loc'] }}</span>
            <span>ID: {{ $tree['user_id'] }}</span>
        </div>
    </div>
</div>
<!-- Level 2 -->
<div class="level-block">
    <div class="levels level-2-m5">

        @foreach($tree['child'] as $child)

            <div class="member-block {{ $child['user_blockclass'] }}">
                <span class="{{ $child['class'] }}"><i class="fa fa-user"></i></span>
                <div class="mem-info">
                    <span class="bold">{{ $child['user_name'] }}</span>
                    <span>{{ $child['user_loc'] }}</span>
                    <span>ID: {{ $child['user_id'] }}</span>
                </div>
            <!-- Level 3 Starts -->
                <div class="level-block">
                    <div class="levels level-3-m5">
                    @foreach($child['child'] as $subchild)

                        <div class="member-block {{ $subchild['user_blockclass'] }}">
                            <span class="{{ $subchild['class'] }}"><i class="fa fa-user"></i></span>
                            <div class="mem-info mem-hover">
                                <span class="bold">{{ $subchild['user_name'] }}</span>
                                <span>ID {{ $subchild['user_id'] }}</span>
                                <a href="#">More Details</a>
                            </div>  
                        </div>

                    @endforeach
                    </div>
                </div>
                <!-- Level 3 Ends here -->
            </div>

        @endforeach
    </div>
</div>

我无法获取值,我想我在迭代中做错了,现在我收到了undefined index 的错误。帮帮我。谢谢

【问题讨论】:

  • 尝试@foreach($child['child'][0] as $subchild)...希望这可行

标签: php laravel laravel-5.3 laravel-blade


【解决方案1】:

由于您在 Sub 子项中有数组,因此您必须再使用一个 foreach 循环,因为如果添加了更多子项

     array:6 [▼
      "class" => "Green"
      "user_name" => "Nitish"
      "user_loc" => "Delhi"
      "user_id" => 1
      "user_blockclass" => null
      "child" => array:4 [▼<-- Using $tree['child'] 
          0 => array:6 [▼
              "class" => "Green"
              "user_name" => null
              "user_loc" => null
              "user_id" => 1
              "user_blockclass" => "fst"
              "child" => array:1 [▼<-- Using $child['child']
                   0 => array:5 [▼<-- If this index increase You'll need one more foreach else @foreach($child['child'][0] as $subchild)
this should work
                       0 => array:5 [▼
                         "class" => "Green"
                         "user_name" => "pandey"
                         "user_loc" => "sdgfsjd"
                         "user_id" => 6
                         "user_blockclass" => "fst"
                       ]
                       1 => array:5 [▼
                          "class" => "Green"
                          "user_name" => "chaku"
                          "user_loc" => "sdgjs"
                          "user_id" => 7
                          "user_blockclass" => "snd"
                       ]
                       2 => array:5 [▼
                          "class" => "Green"
                          "user_name" => "iks"
                          "user_loc" => "sjkdfhkjs"
                          "user_id" => 8
                          "user_blockclass" => "trd"
                       ]
                   ]
           ]
     ]
    1 => array:6 [▶]
    2 => array:6 [▶]
    3 => array:6 [▶]

或使用

@foreach($child['child'][0] as $subchild)

希望这可行

【讨论】:

  • 请检查数组是否还有其他级别,这仅适用于第一次迭代。
  • 请检查我所做的编辑。如果您仍然觉得我错了,请告诉我
  • 我在 HTML 部分有两个 foreach 循环,但它仍然没有访问数据。我在第二个循环中尝试了您的@foreach($child['child'][0] as $subchild),但它显示偏移错误。
  • 可能是因为下一次迭代没有相同的结构
【解决方案2】:

如果你看这个:

     "child" => array:1 [▼
           0 => array:5 [▼  < -- subarray
               0 => array:5 [▼ <-- sub-sub-arrays
                 "class" => "Green"
                 "user_name" => "pandey"
                 "user_loc" => "sdgfsjd"
                 "user_id" => 6
                 "user_blockclass" => "fst"

它在一个子子数组中。所以你需要添加一个额外的数组键

@foreach($child['child'][0] as $subchild)

【讨论】:

  • 是的,我也是这么想的。但我有$child['child'][1]$child['child'][2]$child['child'][3] 等。如果你深入了解,$subchild 也有相同的模式。
猜你喜欢
  • 2015-01-21
  • 1970-01-01
  • 2017-08-01
  • 2014-02-07
  • 2018-05-22
  • 2018-07-07
  • 2012-12-15
  • 2016-11-05
  • 1970-01-01
相关资源
最近更新 更多