我正试图将一个事件导入我的谷歌日历帐户,但由于错误,我的代码无法导入: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!