2013-05-16 147 views
1

我正在嘗試在PHP中使用JSON,我想知道是否有人可以幫我把$ 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

'的foreach($數據 - >事件$項目)'提供的foreach – Jon

+0

無效的參數() –

+0

剛纔看到了'json_decode'(爲什麼TRUE;參數? )。所以'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 ??