我设法用我自己的语言解析数组。 (为此:称为lance项目语言 - lpl)
所以.. \ lance(说(你好)) 将格式化为
Array
(
[0] => lpl_struct
(
[args] => Array
(
[0] => Array
(
[0] => lpl_struct
(
[args] => Array
(
[0] => Array
(
[0] => lpl_struct
(
[args] => Array
(
[0] => hello
)
[funcname] => text
)
)
)
[funcname] => says
)
)
)
[funcname] => lance
)
)
我现在正试图创建一个xml结构,这是我尝试这样做的:
function arr2xml($array) {
$xml = '';
if (is_array($array) || is_object($array)) {
foreach ($array as $key => $value) {
if (is_numeric($key)) {
#move deeper in array to get the right NON-NUMERIC key
}
$xml .= '<' . $key . '>' . "\n" . $this->arr2xml($value) . '</' . $key . '>' . "\n";
}
} else {
$xml = htmlspecialchars($array, ENT_QUOTES) . "\n";
}
return $xml;
}
到目前为止,我得到的是:
<0>
<args>
<0>
<0>
<args>
<0>
<0>
<args>
<0>
hello
</0>
</args>
<funcname>
text
</funcname>
</0>
</0>
</args>
<funcname>
says
</funcname>
</0>
</0>
</args>
<funcname>
lance
</funcname>
</0>
是否可以“跳过”数组中的数字键?说...更深入到下一个“真正的”数组键?
我们应该重新考虑我创建的数组
感谢您的回答。
sry格式错误。我有点新的stackoverflow。 喷枪
答案 0 :(得分:0)
我尝试使用以下方法重建您的阵列:
$arr = array();
$arr[] = array(
'args'=>array(
array(
'args'=>array(
array(
'args'=>array(
'hello',
),
'funcname'=>'text',
),
),
'funcname'=>'says',
),
),
'funcname'=>'lance',
);
然后我更新了你的arr2xml函数:
function arr2xml($array) {
$xml = '';
if (is_array($array) || is_object($array)) {
foreach ($array as $key => $value) {
if (is_numeric($key)) {
// Skip a numeric key and recurse.
$xml .= arr2xml($value);
}
else {
$xml .= '<' . $key . '>' . "\n" . arr2xml($value) . '</' . $key . '>' . "\n";
}
}
} else {
$xml = htmlspecialchars($array, ENT_QUOTES) . "\n";
}
return $xml;
}
这产生了以下内容,这与您正在寻找的内容非常接近:
<args>
<args>
<args>
hello
</args>
<funcname>
text
</funcname>
</args>
<funcname>
says
</funcname>
</args>
<funcname>
lance
</funcname>
唯一缺少的是根元素。您可以使用以下方法手动添加:
'<xml>' . arr2xml($arr) . '</xml>'
希望这有帮助!