Наверное, простой вопрос, но я в тупике:
После инструкция по использованию sabre/vobject я зациклю свойство 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
@ImranMomin какая разница? Добавление ключа здесь не решает проблему
"Добавление ключа не решает здесь проблему" - это правда!
foreach ($vCard->TEL as $number) {
echo (string)$number . ': ' . $number['TYPE'] . PHP_EOL;
}
не могли бы вы объяснить, почему это работает и какие изменения вы внесли?
Кроме того, вы уверены, что $number
— это и строка, и массив?
Результат: «Недопустимое смещение строки ‘TYPE’»
Решение, которое я нашел:
foreach ($vCard->TEL as $key => $number) {
echo (string)$number . ': ' . $vCard->TEL[$key]->parameters['TYPE'] . PHP_EOL;
}
Можете ли вы попробовать это foreach ($vCard->TEL as $key => $number) { echo (string)$number . ':' . $vCard[$key]['TYPE'] . PHP_EOL; } примечание: не тестировалось, просто предложение