2016-10-18 3 views
1

У меня есть следующие json_decode данные, которые что-то вроде этого:Twig перебрать массив

Array 
( 
[0] => Array ( 
    [id] => 218 
    [startTime] => 1478363400000 
    [EndTime] => 1478367000000 
    [c] => Array ( 
     [id] => 1 
     [code] => A 
     [name] => Name 
     [postalCode] => 7TF 
     [contact] => 1111 242 3144 
     [email] => 
     [website] =>/
     [fax] => 
     [address] => Thisistheaddress 
     [latitude] => 53.80729675111 
     [longitude] => -1.5190633535385 
     [status] => ONLINE 
    ) 
    [service] => Array ( 
     [id] => 1 
     [code] => 100 
     [description] => GENERAL 
    ) 
) 
[1] => Array ([id] => 237 [startTime] => 1478593800000 [EndTime] => 1478597400000 [c] => Array ([id] => 1 [code] => A [name] => Name [postalCode] => 7TF [contact] => 1111 242 3144 [email] => [website] =>/[fax] => [address] => Thisistheaddress [latitude] => 53.80729675111 [longitude] => -1.5190633535385 [status] => ONLINE) [service] => Array ([id] => 1 [code] => 100 [description] => GENERAL)) 
[2] => Array ([id] => 199 [StartTime] => 1478187000000 [EndTime] => 1478190600000 [c] => Array ([id] => 1 [code] => A [name] => Name [postalCode] => 7TF [contact] => 1111 242 3144 [email] => [website] =>/[fax] => [address] => Thisistheaddress [latitude] => 53.80729675111 [longitude] => -1.5190633535385 [status] => ONLINE) [service] => Array ([id] => 1 [code] => 100 [description] => GENERAL)) 
) 

Мой вопрос, как я итерацию это, чтобы я мог получить [начальный промежуток], [имя] и [адрес] в веточке. Я попытался следующие:

{% for key,a in TimeInfo|keys %} 
    Key : {{ key }} 
{% endfor %} 

Результат выше просто дает мне ключ, я также попробовал следующее:

{% for a in TimeInfo %} 
    {{ a.name }} 
{% endfor %} 

Полученный результат является ошибкой. Цените помощь :)

+1

Вы уверены, что JSON верен? У вас нет запятых или кавычек вокруг строки. Это не кажется правильным. –

+0

Можете ли вы добавить к вашему вопросу правильный массив json или php? То, что вы положили, неверно. (отсутствует кома, котировки ...) – COil

+0

Какова была ошибка второго цикла, который должен работать – Chausser

ответ

0

Ваша вторая попытка петля была близка, но name ключ оленьей кожи существует на начальных ключах массива. id, startTime, EndTime, c, service. Ключ name отображается в поле ниже c. Таким образом, вы должны иметь к нему доступ, как:

{% for a in TimeInfo %} 
    The start time is: {{ a.startTime }} 
    The Name is: {{ a.c.name }} {# notice we access "c" then "name" #} 
{% endfor %} 
+0

Спасибо за это сэр, мне это очень помогает: D – momori14

0

Пожалуйста, убедитесь, что вы используете функцию json_decode перед передачей массива TimeInfo в шаблон ветви. Вы можете повторить его как простой многомерный массив. Небольшой трюк с startTime/StartTime поможет избежать ошибки, связанной с первой заглавной буквой в ключе элемента StartTime вашего массива данных.

<ul> 
    {% for array in TimeInfo %} 
     <li> 
      <ul> 
       <li>Start Time: {{ attribute(array, 'startTime') ?: attribute(array, 'StartTime') }}</li> 
       <li>Name: {{ attribute(array, 'c').name }}</li> 
       <li>Address: {{ attribute(array, 'c').address }}</li>  
      </ul> 
     </li> 
    {% endfor %} 
</ul> 
Смежные вопросы