有人能帮忙将XML文档中的数据转换为关联数组吗?由于XML结构有点类似于3D,而数组更像是2D结构(请原谅我在整个过程中缺乏正确的术语)。XML元素具有属性、子元素和孙子元素(但我不知道它们的名称),因此我想尝试将数组中的键制作成每个子元素/属性名称的连接,并将值设置为该值。问题是我需要将属性名称和值作为连接数组键的一部分,以使其唯一...
例如:
但是我得到了这个结果:
例如:
<Computer id="1">
<OS>
<Name>Linux</Name>
<Age>Older than me</Age>
</OS>
</Computer>
<Computer id="2">
<OS>
<Name>Windows</Name>
<Age>Not so much</Age>
</OS>
</Computer>
最好能够提供:
[Computer-id-1-OS-Name] = 'Linux'
[Computer-id-1-OS-Age] = 'Older than me'
[Computer-id-2-OS-Name] = 'Windows'
[Computer-id-2-OS-Age] = 'Not so much'
但是我得到了这个结果:
[Computer-id] = '1'
[Computer-OS-Name] = 'Linux'
[Computer-OS-Age] = 'Older than me'
[Computer-id] = '2'
[Computer-OS-Name] = 'Windows'
[Computer-OS-Age] = 'Not so much'
所以[计算机-id]密钥不是唯一的。我正在使用递归函数读取这些值,但我无法确定如何将属性名称和属性值放入下级键的名称中...(顺便说一句,这似乎是一个不合逻辑的任务,但有很好的理由!)任何帮助都将不胜感激...
以下是将XML数据读入多维数组后“压缩”数据的功能。我不确定我的方法是否正确!
function flattenArray ($array, $baseName = NULL)
{
reset($array);
while (list ($key, $value) = each($array)) {
$outKey = $key . "-";
if (is_array($value)) {
flattenArray($value, $baseName . $outKey);
} else {
$finalKey = $baseName . rtrim($outKey, '-');
$finalValue = $value;
echo "$finalKey = $finalValue\n";
}
}
}