gpt4 book ai didi

php - Laravel - 未找到 SimpleXMLElement

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:47 25 4
gpt4 key购买 nike

我读了this link和另一个例子。我想使用 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();
}

这是我的第一次尝试。它返回我:

simpleXML functions are available.
blafoostack

我的第二次尝试是:

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;
}

我在这种情况下出错了:

fatal error :在 null 上调用成员函数 addChild()

这是我想要的:

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

有什么建议吗?

最佳答案

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

private function array_to_xml(array $arr, SimpleXMLElement $xml = NULL)

现在,请注意您是这样调用此方法的:

$this->array_to_xml($test_array); // <--- No second parameter

这意味着变量 $xmlarray_to_xml() 上下文中是 null 因为你没有给出方法和第二个参数(因此它默认为 NULL)。由于您从未构建过实际元素,因此它为您提供了

Fatal error: Call to a member function addChild() on null

你要么必须给方法必要的元素

$this->array_to_xml($test_array, new SimpleXMLElement);

或者在方法内部构建元素

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

关于php - Laravel - 未找到 SimpleXMLElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38327396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com