sabre:循环通过 TEL-property 不能提供预期的结果

Posted

技术标签:

【中文标题】sabre:循环通过 TEL-property 不能提供预期的结果【英文标题】:sabre: looping through TEL-property doesn´t provide what expected 【发布时间】:2019-05-30 13:12:42 【问题描述】:

一个可能很简单的问题 - 但我很笨:

在sabre/vobject usage instruction 之后,我将循环 TEL 属性以获取数字及其类型。

BEGIN:VCARD
TEL;TYPE=HOME,PREF:+15551234560
TEL;TYPE=HOME,FAX:+15551234569
TEL;TYPE=WORK:+155523456789
END:VCARD
foreach ($vCard->TEL as $number) 
    echo (string)$number . ': ' . $vCard->TEL['TYPE'] . php_EOL;

而不是

+15551234560: HOME,PREF
+15551234569: HOME,FAX
+155523456789: WORK

我收到:

+15551234560: HOME,PREF
+15551234569: HOME,PREF
+155523456789: HOME,PREF

【问题讨论】:

你能试试这个 foreach ($vCard->TEL as $key => $number) echo (string)$number . ':'。 $vCard[$key]['TYPE'] 。 PHP_EOL; 注意:未经测试,只是一个建议 @ImranMomin 会有什么不同?添加密钥似乎并不能解决这里的问题 “添加密钥似乎并不能解决这里的问题” - 这是真的! 【参考方案1】:
foreach ($vCard->TEL as $number) 
    echo (string)$number . ': ' . $number['TYPE'] . PHP_EOL;

【讨论】:

您想解释一下为什么会这样以及您做了哪些更改? 另外,你确定$number也是一个字符串和一个数组吗? 结果:“非法字符串偏移 'TYPE'”【参考方案2】:

我找到的解决办法是:

foreach ($vCard->TEL as $key => $number) 
    echo (string)$number . ': ' . $vCard->TEL[$key]->parameters['TYPE'] . PHP_EOL;

【讨论】:

以上是关于sabre:循环通过 TEL-property 不能提供预期的结果的主要内容,如果未能解决你的问题,请参考以下文章

sabre/dav - 服务器指定了一个无效的日历主页

Sabre 无会话身份验证

如何将掩码卡号而不是完整的卡号发送到 Sabre AirTicketLLSRQ api?

Sabre 并发请求限制

使用带有 floccus 的 sabre/dav 服务器

在Sabre GetReservation文件上运行wsdl工具时出错