定位JSON数组中的最后一个列表

时间:2014-03-08 17:44:44

标签: php json

{
  events: [
    {
      event: {
      status: "Completed",
      title: "Roy Smoothe Talk: CEO of 'Just Cool'",
      url: "https://brookesbe.eventbrite.co.uk/?ref=ebapi",
      id: 10487792269,
      repeats: "no",
      start_date: "2014-03-03 18:00:00"
      }
    },
      {
      event: {
      status: "Live",
      title: "Brookes Entrepreneurs Speed Networking Event",
      url: "https://www.eventbrite.co.uk/e/brookes-entrepreneurs-speed-networking-event-tickets-10841927497?ref=ebapi",
      id: 10841927497,
      repeats: "no",
      start_date: "2014-03-24 18:00:00"
      }
    }
  ]
}

如果难以理解,可以看到here

我看过这个问题

  

get last element of a json object in javascript

虽然我看不出如何将它应用到我的问题中。

我目前正在使用此代码来获取第二项有效,但会在添加新事件时中断。

function eb_widget($ret){
  $obj = my_cache_user_list_events();
  if ($ret == "title") {
    return  ($obj->events[1]->event->title);
  }
  if ($ret == "url") {
    return  ($obj->events[1]->event->url);
  } 
  if ($ret == "start_date") {
    return  ($obj->events[1]->event->start_date);
  }
  if ($ret == "status"){
    return ($obj->events[1]->event->status);
  }
}

我尝试使用[-1],虽然这似乎不起作用。我认为我需要做的是计算“事件”的数量然后使用长度-1,虽然我不知道如何做到这一点。

由于

2 个答案:

答案 0 :(得分:3)

此:

return end($obj->events)->event->title;

或者这个:

$last = end($obj->events);
return $last->event->title;

答案 1 :(得分:0)

要回答的end关键字是可行的方法,但您也可以这样做:

$obj->events[count($obj->events) - 1]

Fiddle example