У меня есть и массив объектов, как показано ниже. У меня возникли проблемы при добавлении в этот массив объектов, поскольку я продолжаю получать ошибку.
Вот как это происходит на данный момент:
SimpleXMLElement Object
(
[url] => Array
(
[0] => SimpleXMLElement Object
(
[loc] => http://jbsoftware.co.uk/
[lastmod] => 2015-02-02
[changefreq] => monthly
[priority] => 1.0
)
)
)
Теперь, чтобы добавить к концу этого я делаю следующее:
$note="<url>
<loc>{$actual_link}</loc>
<lastmod>{$date}</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
";
$sxe = new SimpleXMLElement($note);
$page[] = $sxe;
Что, в свою очередь, дает мне эту ошибку ….
Fatal error: controller::generateSitemap() [<a href='controller.generatesitemap'>controller.generatesitemap</a>]: Cannot create unnamed attribute
Может кто-нибудь, пожалуйста, дайте мне знать, почему я не могу просто добавить это в конец текущего массива объектов?
Это действительно поставило меня в тупик.
$page
это не массив (или объект-массив, который ничего не будет значить), это объект (экземпляр класса). Таким образом, вы не можете использовать методы массива с ним. Вы можете использовать только доступные методы класса simpleXMLElement.
Для ваших конкретных потребностей simpleXMLElement не предлагает никаких методов для добавления в качестве дочернего элемента другого экземпляра simpleXMLElement. Однако вы можете использовать addChild
метод для построения элемента поддерева элементом:
$url = $page->addChild('url');
$loc = $url->addChild('loc', "{$actual_link}");
$lastmod = $url->addChild('lastmod', "{$date}");
...
$url
, $loc
а также $lastmod
новые экземпляры simpleXMLElement.
Других решений пока нет …