2017-01-17 2 views
0

У меня есть цикл, где есть объекты, которые изменяются. Как вы можете видеть в нашем первом объекте, мы имеем tv, а второе имеет gv. Проблема в том, что я хочу перебрать все объекты с помощью петли foreach, которую предоставляет laravel. (Эти данные передаются в виде массива, я просто положить его в формат JSON для чтения)Laravel foreach с шансом, что индекс отличается

[ 
{ 
    "items" : { 
    "pv" : "0", 
    "tv" : "0", 
    "ov" : "0" 
    } 
}, 
{ 
    "items" : { 
    "pv" : "0", 
    "gv" : "0", 
    "ov" : "0" 
    } 
} 
] 

Это то, что я мог придумать с точки зрения логики, но я все еще получаю вернулся с Undefined индекс: тв

@foreach($products as $product) 
<tr> 
    <td>{{$product['items']['pv']}}</td> 
    <td> 
     @if(empty($product['items']['tv'])) 
      {{$product['items']['gv']}} 
     @else 
      {{$product['items']['tv']}} 
     @endif 
    </td> 
    <td>{{$product['items']['ov']}}</td> 
</tr> 
@endforeach 
+0

Ваш код кажется правильным для меня, почему бы вам не сбросить содержимое продуктов $ product и $ прямо под декларацией foreach, чтобы узнать, что там? – JorgeeFG

+0

Возвращаемый массив - все хорошо. Я могу запустить код, не пытаясь отобразить tv или gv, удалив центр td. Он отображается нормально. –

+1

Знаете ли вы, что empty() вернет true? Поскольку empty является true для unset, null, 0, false и т. Д., Возможно, вы хотите использовать isset или array_key_exists? Также было бы неплохо, если бы вы опубликовали сброшенный массив – JorgeeFG

ответ

0
 @if(array_key_exists('tv',$product['value'])) 
     {{$product['value']['tv']}} 
    @else 
     {{$product['value']['gv']}} 
    @endif 
Смежные вопросы