不知道这里有什么问题。请阅读以下人们的意见:http://informationideas.com/news/2006/06/14/fatal-error-cannot-use-string-offset-as-an-array-in/和此处:Cannot use string offset as an array in php
我有print_r()
- $entries
(来自Google日历)中的实际值,它们都很好。
foreach ( $entries as $e ) {
$info = array(); // added to see if pre-declaration helps
$info = array(
$e[ 'title' ],
$e[ 'gd:when attr' ][ 'startTime' ],
$e[ 'gd:where attr' ][ 'valueString' ],
$e[ 'content' ]
);
}
我做错了什么?
转储$entries
:
Array
(
[id] => http://www.google.com/calendar/feeds/u879een48cs77cp2rv7s05f5ps%40group.calendar.google.com/public/full/aev64a1c7kou9ige6n2mulm8mo
[published] => 2009-12-31T15:34:47.000Z
[updated] => 2009-12-31T15:34:58.000Z
[category attr] => Array
(
[scheme] => http://schemas.google.com/g/2005#kind
[term] => http://schemas.google.com/g/2005#event
)
[category] =>
[title attr] => Array
(
[type] => text
)
[title] => Happy New Year!
[content attr] => Array
(
[type] => text
)
[content] =>
[link] => Array
(
[0 attr] => Array
(
[rel] => alternate
[type] => text/html
[href] => http://www.google.com/calendar/event?eid=YWV2NjRhMWM3a291OWlnZTZuMm11bG04bW8gdTg3OWVlbjQ4Y3M3N2NwMnJ2N3MwNWY1cHNAZw
[title] => alternate
)
[0] =>
[1 attr] => Array
(
[rel] => self
[type] => application/atom+xml
[href] => http://www.google.com/calendar/feeds/u879een48cs77cp2rv7s05f5ps%40group.calendar.google.com/public/full/aev64a1c7kou9ige6n2mulm8mo
)
[1] =>
)
[author] => Array
(
[name] => New Orleans Parents Guide to Public Schools
)
[gd:comments] => Array
(
[gd:feedLink attr] => Array
(
[href] => http://www.google.com/calendar/feeds/u879een48cs77cp2rv7s05f5ps%40group.calendar.google.com/public/full/aev64a1c7kou9ige6n2mulm8mo/comments
)
[gd:feedLink] =>
)
[gd:eventStatus attr] => Array
(
[value] => http://schemas.google.com/g/2005#event.confirmed
)
[gd:eventStatus] =>
[gd:where attr] => Array
(
[valueString] =>
)
[gd:where] =>
[gd:who attr] => Array
(
[email] => u879een48cs77cp2rv7s05f5ps@group.calendar.google.com
[rel] => http://schemas.google.com/g/2005#event.organizer
[valueString] => New Orleans Parents Guide to Public Schools
)
[gd:who] =>
[gd:when attr] => Array
(
[endTime] => 2010-01-01
[startTime] => 2009-12-31
)
[gd:when] =>
[gd:transparency attr] => Array
(
[value] => http://schemas.google.com/g/2005#event.opaque
)
[gd:transparency] =>
[gCal:anyoneCanAddSelf attr] => Array
(
[value] => false
)
[gCal:anyoneCanAddSelf] =>
[gCal:guestsCanInviteOthers attr] => Array
(
[value] => true
)
[gCal:guestsCanInviteOthers] =>
[gCal:guestsCanModify attr] => Array
(
[value] => false
)
[gCal:guestsCanModify] =>
[gCal:guestsCanSeeGuests attr] => Array
(
[value] => true
)
[gCal:guestsCanSeeGuests] =>
[gCal:sequence attr] => Array
(
[value] => 2
)
[gCal:sequence] =>
[gCal:uid attr] => Array
(
[value] => aev64a1c7kou9ige6n2mulm8mo@google.com
)
[gCal:uid] =>
)
答案 0 :(得分:19)
我的赌注是
$e
中的一个或多个不是数组试
foreach ( $entries as $e ) {
$info = array(); // added to see if pre-declaration helps
if (is_array($e)) // only go on if $e is actually an array
$info = array( $e[ 'title' ],
$e[ 'gd:when attr' ][ 'startTime' ],
$e[ 'gd:where attr' ][ 'valueString' ],
$e[ 'content' ] );
}
如果您想要真正做到这一点,请先使用$e
或isset()
检查array_key_exists()
(“startTime”等)的每个键。
答案 1 :(得分:1)
你不需要foreach
$info = array(
$entries[ 'title' ],
$entries[ 'gd:when attr' ][ 'startTime' ],
$entries[ 'gd:where attr' ][ 'valueString' ],
$entries[ 'content' ]
);
答案 2 :(得分:0)
首先要检查这个错误,检查它是一个数组还是网络然后执行数组元素操作