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 不能提供预期的结果的主要内容,如果未能解决你的问题,请参考以下文章