2013-05-16 3 views
1

Я пытаюсь работать с JSON на PHP, и мне было интересно, может ли кто-нибудь помочь мне получить меня к $ events => $ url, когда информация будет возвращена из json_decode. Что такое переменный путь. Есть целый ряд циклов записи в данном возврате, и я использую что-то вроде:Получение информации о json sting

$data = json_decode($feeds,true); 
    foreach($data as $item=>$events) { 
        $date = $events=>$month.'/'.$events=>$day.'/'.$events=>$year; 
        $events.='<li><span class="engindate">'.$date.'</span><br /><span class="source">'.$item["title"].'</span><br /><a href="'.$item["url"].'">'.$item["details"].'</a></li>'; 
       } 

Вот пример JSON (да, я знаю, что это неполное)

{ 
    "month": 5, 
    "year": 2013, 
    "events": [ 
    { 
     "url": "http://www.engin.umich.edu/college/about/cal/events/2013/may/shavuot-ends", 
     "id": "shavuot-ends", 
     "month": 5, 
     "year": 2013, 
     "day": 16, 
     "startTime": "1:42", 
     "endTime": "1:42", 
     "hideTime": "true", 
     "deadline": "true", 
     "am_pm": "pm", 
     "am_pm_start": "pm", 
     "am_pm_end": "pm", 
     "title": "Shavuot ends", 
     "location": "", 
     "details": "Shavuot runs from May 14 to May 16.", 
     "host": "Michigan Engineering", 
     "event_type": "Holiday", 
     "image": { 
     "src": "http://www.engin.umich.edu/++resource++umich_images/default_event.jpg", 
     "alt": "Shavuot ends" 
     } 
    },... 
+0

'Еогеасп ($ данных-> события как $ пункта)' – Jon

+0

Недействительный аргумент для Еогеасп() –

+0

Только сейчас увидел 'параметр true' на' json_decode' (почему?). Поэтому 'foreach ($ data ['events'] как $ item)'. – Jon

ответ

1

Вы перепутали ваши -> и => операторов. Попробуйте так:

$data = json_decode($feeds,true); 
    foreach($data['events'] as $event) { 
        $date = $event['month'].'/'.$event['day'].'/'.$event['year']; 
        $events.='<li><span class="engindate">'.$date.'</span><br /><span class="source">'.$event["title"].'</span><br /><a href="'.$event["url"].'">'.$event["details"].'</a></li>'; 
       } 
+0

Работал как шарм! Большое спасибо! –

+0

@WallyKolcz Добро пожаловать. – likeitlikeit

+0

Еще один быстрый вопрос. Если бы я хотел получить один элемент из списка событий по его индексу, было бы что-то вроде $ event [0] ['month']? –

1

$data['events']['url']

Массив многомерный.

foreach($data as $key=>$item) { 
    if($key=='events') { 
     $url = $item['url']; 
    } 
} 

или

foreach($data['events'] as $key=>$item) { 
    if($key=='url') { 
     $url = $item; 
    } 
} 
+0

Итак, если я присваиваю значение $ data элементу в цикле foreach, это будет $ item ['events'] ['url']? foreach ($ data as $ item) –

0

попробовать это:

$data = json_decode($feeds); 

$eventsHtml = ""; 
foreach($data->events as $event) { 
        $date = $data->month.'/'.$event->day.'/'.$data=>year; 
        $eventsHtml .='<li><span class="engindate">'.$date. 
            '</span><br /><span class="source">'. 
            $event=>title. 
            '</span><br /><a href="'.$event=>url.'">'. 
            $event->details.'</a></li>'; 
       } 

У вас есть объект "data". У этого есть член «month», так что это У него есть член «events», который представляет собой массив. Первое событие - $data->events[0]. Если вы итерации с foreach, это foreach($data->events as $event) { с $event как одно событие.

Основные ошибки:

$events=>$month // is inproper syntax 
foreach($data as $item=>$events) { 
     .. 
     $events.= // this would overwrite the iterator variable above ?? 
Смежные вопросы