为什么这个PHP数组在它为空时仍然保持设置状态?

问题描述 投票:0回答:1

我正在我正在工作的站点上创建ics文件解析器,无论我尝试写什么以检查$icsEvent['LOCATION']索引是否为空,它都会一直保持其值的状态。我正在尝试获取一个在ics事件中输入的地址,并将其分解为位置名称,位置街道,位置城市,位置状态和位置邮政编码。 ics文件中的第一个事件有一个地址,而第二个则没有。当它到达第二个事件时,它仍然表现为好像第二个事件不为空,并导致它为未定义的偏移量引发错误。

183 /* Getting the name of event */
184 $eventName  = $icsEvent['SUMMARY'];
185 /* Getting the description of event */
186 $eventDesc  = $icsEvent['DESCRIPTION'];
187 /* Getting the location of event */
188 $eventLoc   = $icsEvent['LOCATION'];
189 if($eventLoc != ""){
190   $parts  = explode("\, ",$eventLoc);
191   $locName    = $parts[0];
192   $locStreet  = $parts[1];
193   $locCity    = $parts[2];
194   $locStateZ  = $parts[3];
195   $parts      = explode(" ",$locStateZ);
196   $locState   = $parts[0];
197   $navState   = convertState($locState);
198   $locZIP     = $parts[1];
199 }else{
200   $locName    = "My Location";
201   $locStreet  = "5200 Lake Shore Parkway";
202   $locCity    = "Anytown";
203   $locState   = "MN";
204   $navState   = "Minnesota";
205   $locZIP     = "80134";
206 }
207 $find = " ";
208 $replace = "+";
209 $navStreet = str_replace($find,$replace,$locStreet);

注意:未定义偏移:1 in/home/user/mysite.com/components/data/icsparse.php在线192

注意:未定义偏移:2 in/home/user/mysite.com/components/data/icsparse.php在线193

注意:未定义偏移:3 in/home/user/mysite.com/components/data/icsparse.php在线194

注意:未定义偏移:1 in/home/user/mysite.com/components/data/icsparse.php在线198

ics calendar file这是ics文件的前几个条目:

BEGIN:VEVENT

DTSTART:20191123T013000Z

DTEND:20191123T023000Z

DTSTAMP:20191122T205609Z

UID:[email protected]

创建:20191122T064508Z

说明:

上次修改时间:20191122T064508Z

位置:阿拉斯加太平洋大学\,4101大学博士\,安克雷奇\,AK 99508 \,美国

SEQUENCE:0

状态:已确认

摘要:篮球vs伯奇伍德·克里斯蒂安

TRANSP:OPAQUE

END:VEVENT

BEGIN:VEVENT

DTSTART; VALUE = DATE:20190624

DTEND; VALUE = DATE:20190629

RRULE:FREQ = YEARLY; WKST = SU; COUNT = 1; INTERVAL = 1

DTSTAMP:20191122T205609Z

UID:[email protected]

创建:20181218T234159Z

说明:

上次修改时间:20191122T060518Z

位置:

SEQUENCE:1

状态:已确认

摘要:足球训练营(6年级以下)

TRANSP:OPAQUE

END:VEVENT

BEGIN:VEVENT

DTSTART; VALUE = DATE:20190617

DTEND; VALUE = DATE:20190622

RRULE:FREQ = YEARLY; WKST = SU; COUNT = 1; INTERVAL = 1

DTSTAMP:20191122T205609Z

UID:[email protected]

创建:20181218T234147Z

说明:

上次修改时间:20191122T060517Z

位置:

SEQUENCE:1

状态:已确认

摘要:STEM训练营(K-8)

TRANSP:OPAQUE

END:VEVENT

BEGIN:VEVENT

DTSTART:20191124T010000Z

DTEND:20191124T040000Z

DTSTAMP:20191122T205609Z

UID:[email protected]

创建:20191119T232703Z

说明:

上次修改时间:20191119T232703Z

位置:

SEQUENCE:0

状态:已确认

摘要:父母之夜

TRANSP:OPAQUE

END:VEVENT

为什么这样做?

php arrays parsing icalendar
1个回答
0
投票

由于缺少部分,因此在访问索引数组时需要检查是否存在。

$locStreet  = isset($parts[1]) ? $parts[1] : '';
© www.soinside.com 2019 - 2024. All rights reserved.