不能将Event类型的对象用作数组


Cannot use object of type Event as array

我正试图将一个事件导入我的谷歌日历帐户,但由于错误,我的代码无法导入:Cannot use object of type Event as array这出现在我的脚本中的第2149行,位于此处:

$exported_events = array();
foreach($events as $event_id => $event)
{
    $event = new Event();
    $event->setSummary($event->location);
    $event->setLocation($event->location);
    $start = new EventDateTime();
    $start->setDateTime($event['starts']); // Line 2149
    $event->setStart($start);
    $end = new EventDateTime();
    $end->setDateTime((object) $event['ends']);
    $event->setEnd($end);
    $attendees = array();
    foreach($event['people'] as $i => $person)
    {
        $attendee = new EventAttendee();
        $attendee->setEmail($person->email);
        $attendees[] = $attendee;
        $event->attendees = $attendees;
    }
    $createdEvent = $service->events->insert('primary', $event);
    $calendar_event_id = $createdEvent->getId();
    if(!is_null($calendar_event_id))
    {
        $exported_events[] = $event_id; 
    }
}

现在,当我的foreach循环遍历$events数组时,它抛出了一个带有$event['location']的错误,所以我将其更改为$event->location,现在它在作为数组项的第2149行上抛出一个错误(数组打印在页面下方),如果我将其改为$event->starts,它将抛出这个错误:Undefined property: Event::$starts,即使我放入(object) $event['starts'],它仍然无法工作。

我怎样才能通过它使它工作?var_dump($event['starts'])以字符串形式返回。

每个$event:的阵列

Array
(
    [location] => Some location in the US
    [starts] => 2012-03-13T10:00:00
    [ends] => 2012-03-13T14:00:00
    [people] => Array
        (
            [0] => Array
                (
                    [name] => Joan Uton
                    [email] => rnewkj@hotmail.co.uk
                )
            [1] => Array
                (
                    [name] => Jack Sparrow
                    [email] => potc@gmail.com
                )
            [2] => Array
                (
                    [name] => Barack Obama
                    [email] => barak@obama.com
                )
        )
)

您似乎正在使用两种类型的$event。一个作为数组,一个作为对象。

foreach($events as $event_id => $event) // $event is array
//...
$event = new Event();                   // array is overwritten by new object

通过给一个类型一个不同的名称进行重构。

您正在覆盖您的变量。更改$event变量之一的名称:

foreach($events as $event_id => $event)
{
    $event = new Event(); // You just overwrote the above variable. Use a different name!