2016-01-22 73 views
1

我想我會讓這個簡單的事情困惑。我只想得到我的關鍵'周'和'天'的價值。我曾嘗試以下:Laravel PHP foreach循環通過鍵獲得價值

@foreach($years as $key3 => $year) 
       <h1>{{$key3}}</h1> 
       @foreach($year as $key2 => $months) 
        <p>{{$key2}}</p> 
        @foreach($months as $key1 => $days) 
         <p>{{$days['weeks']}}</p> 
         <p>{{$days->weeks}}</p> //try two// 
        @endforeach 
       @endforeach 
      @endforeach 

,與此錯誤迴應:

Illegal string offset 'weeks' 

這是陣列IM試圖循環的例子:

array:4 [▼ 
    2016 => array:12 [▼ 
    "01" => array:2 [▼ 
     "weeks" => 5 
     "days" => "31" 
    ] 

有人可以幫助我瞭解我做錯了什麼?

+0

代碼異味:您可能應該對不同數組的不同鍵使用不同的名稱。 – tyteen4a03

+0

你能解釋一下你的意思嗎? –

+0

見L1,L3和L5?它們都共享相同的變量名'$ key'作爲嵌套的'foreach'循環的關鍵字。您應該將它們重命名爲不同的名稱,以免混淆。 (通常內部的'$ key'會覆蓋外部的'$ key',但這是一個好習慣) – tyteen4a03

回答

2

你並不需要最後的foreach,

@foreach($years as $key => $year) 
    <h1>{{$key}}</h1> 
    @foreach($year as $key => $months) 
     <p>{{$key}}</p> 
     {{ $months['weeks'] }} 
     {{ $months['days'] }} 
    @endforeach 
@endforeach 

天不是一個數組。但月份包含密鑰:幾周和幾天。 如果您希望對象表示法( - >)通過在數組之前鍵入(object)將其轉換爲對象。

+0

爲什麼我不需要最後的foreach? –

+1

@RickiMoore因爲你的數組示例顯示「01」是一個包含數組的月份。該數組只包含2個具有值的鍵而不包含另一個數組。因此循環遍歷月份只會返回值。 –