【发布时间】:2016-10-24 14:09:38
【问题描述】:
我正在将 XML 文件转换为关联数组以提取数据,问题是我必须根据数组数量进行 10 个循环才能获取数据。
有没有更好的方法来获取特定列数据而无需创建许多循环?因为我想将它们分配给变量。
我试图从中获取数据的数组
Array
(
[catalog] => Array
(
[book] => Array
(
[0] => Array
(
[took] => Array
(
[dodo] => Array
(
[ahmadz] => Array
(
[lolo] => Array
(
[author] => Ralls, Kim
[title] => Midnight Rain
[genre] => Fantasy
[price] => 5.95
[publish_date] => 2000-12-16
[description] => A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.
)
)
)
)
)
[1] => Array
(
[took] => Array
(
[dodo] => Array
(
[ahmadz] => Array
(
[lolo] => Array
(
[author] => Ralls, Kim
[title] => Midnight Rain
[genre] => Fantasy
[price] => 5.95
[publish_date] => 2000-12-16
[description] => A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.
)
)
)
)
)
)
)
)
我删除了所有其他数据以使其更易于阅读,但数组中还有许多其他值。无论如何,我如何获得作者的价值例如。
echo $array['author'];
假设我有很多作者数据,而不是上面例子中的一个
请帮忙!
已编辑.....................
Array
(
[catalog] => Array
(
[book] => Array
(
[0] => Array
(
[took] => Array
(
[dodo] => Array
(
[ahmadz] => Array
(
[lolo] => Array
(
[tata] => Array
(
[author] => jac1
[title] => Midnight Rain1
[genre] => Fantasy
[price] => 5.95
[publish_date] => 2000-12-16
[description] => A former architect battles corporate zombies.
)
[tata2] => Array
(
[author] => jack2
[title] => Midnight Rain1
[genre] => Fantasy
[price] => 5.95
[publish_date] => 2000-12-16
[description] => A former architect battles corporate zombies.
)
)
)
)
)
)
[1] => Array
(
[took] => Array
(
[dodo] => Array
(
[ahmadz] => Array
(
[lolo] => Array
(
[tata] => Array
(
[author] => jack3
[title] => Midnight Rain1
[genre] => Fantasy
[price] => 5.95
[publish_date] => 2000-12-16
[description] => A former architect battles corporate zombies.
)
[tata2] => Array
(
[author] => jack4
[title] => Midnight Rain1
[genre] => Fantasy
[price] => 5.95
[publish_date] => 2000-12-16
[description] => A former architect battles corporate zombies.
)
)
)
)
)
)
)
)
)
正如您在上面看到的,我只想获取具有父键 tata 而不是 tata2 的值
这样我就可以将它们分别插入到数据库中
【问题讨论】:
-
我不太明白这个问题。您可以使用
$array['catalog']['book']['took']['dodo']['ahmadz']['lolo']['author']获取作者,无需任何循环。也许您将数组简化得如此之多,以至于问题并不明显,这将有助于显示至少一部分未修改的输入数组。 -
如果您想要更简洁的代码,我认为您最好使用 XML 解析器。 xpath 之类的东西应该允许您轻松地从 XML 结构内的任何位置获取数据。 us2.php.net/manual/en/simplexmlelement.xpath.php
-
我试图通过XML提取数据,但是父母的名字彼此不同,因此我无法编写一个路径来获取所有数据。另外我不是 xml 专家,所以我尝试将其转换为更慢但更容易的数组!。
-
将 XML 转换为数组并不是最好的主意 - 你会丢失信息。将其保留为 SimpleXMLElement 或 DOMDocument 并使用 Xpath 获取它的部分/值。 Xpath 可以不仅仅是一条简单的路径。
-
@user2565853:好的,所以你写的是元素名称可以改变,元素的数量可以改变,对吧?那么你想要的数组元素的确切标准是什么?如果是标签名,你会远使用 XPath 而不是使用数组。
标签: php arrays xml multidimensional-array