gpt4 book ai didi

php - 使用 PHP 将 XML 转换为关联数组

转载 作者:可可西里 更新时间:2023-11-01 12:22:23 25 4
gpt4 key购买 nike

任何人都可以帮助将数据从 XML 文档转换为关联数组吗?我遇到了问题,因为 XML 结构有点像 3D 而数组更像是一个 2D 结构(请原谅我缺乏正确的术语)。XML 元素有属性、子元素和孙子元素(但我从来不知道他们的名字),所以我想我会尝试使数组中的键成为每个子元素/属性名称和等于的值的串联,好吧,值(value)。问题是我需要属性名称和值作为串联数组键的一部分以使其唯一...

例如:

<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'

因此 [Computer-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";
}
}
}

最佳答案

这对我来说效果很好,而且很简单。

$ob = simplexml_load_file('test.xml');
$json = json_encode($ob);
$array = json_decode($json, true);

关于php - 使用 PHP 将 XML 转换为关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6533790/

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