Php Laravel-SimpleXMLElement';找不到

Php Laravel-SimpleXMLElement';找不到,php,arrays,laravel,php-7,Php,Arrays,Laravel,Php 7,我读了很多例子。我想使用Laravel(和php7)将数组转换为XML。 这是我的密码: public function siteMap() { if (function_exists('simplexml_load_file')) { echo "simpleXML functions are available.<br />\n"; } else { echo "simpleXML f

我读了很多例子。我想使用Laravel(和php7)将数组转换为XML。 这是我的密码:

   public function siteMap() 
    {
        if (function_exists('simplexml_load_file')) {
            echo "simpleXML functions are available.<br />\n";
        } else {
            echo "simpleXML functions are not available.<br />\n";
        }
        $array = array (
            'bla' => 'blub',
            'foo' => 'bar',
            'another_array' => array (
                'stack' => 'overflow',
            ),
        );
        $xml = simplexml_load_string('<root/>');

        array_walk_recursive($array, array ($xml, 'addChild'));
        print $xml->asXML();
    }
我的第二次尝试是:

public function siteMap() 
{

    $test_array = array (
        'bla' => 'blub',
        'foo' => 'bar',
        'another_array' => array (
            'stack' => 'overflow',
        ),
    );
    $this->array_to_xml($test_array);

}
private function array_to_xml(array $arr, SimpleXMLElement $xml = NULL)
{
    foreach ($arr as $k => $v) {
        is_array($v)
            ? array_to_xml($v, $xml->addChild($k))
            : $xml->addChild($k, $v);
    }
    return $xml;
}
在这种情况下,我犯了一个错误:

致命错误:在null上调用成员函数addChild()

我想要的是:

<?xml version="1.0"?>
<root>
  <blub>bla</blub>
  <bar>foo</bar>
  <overflow>stack</overflow>
</root>

布拉
福
堆栈

有什么建议吗?

请注意,您的方法签名中有一个
simplexmlement$xml=null

private function array_to_xml(array $arr, SimpleXMLElement $xml = NULL)
现在,请注意,您这样调用此方法:

$this->array_to_xml($test_array); // <--- No second parameter
或者在方法内部构建元素

private function array_to_xml(array $arr)
{
    $xml = new SimpleXMLElement();
    ...
}

添加
echo
before
print$xml->asXML()在第一个代码中查看您的xml@splash58分析错误:语法错误,意外的“echo”“;-@splash58它不记录任何东西您没有看到想要的xml吗?
$this->array_to_xml($test_array, new SimpleXMLElement);
private function array_to_xml(array $arr)
{
    $xml = new SimpleXMLElement();
    ...
}