我正在使用PHP从XML文件中收集属性。
例如:
<?xml version="1.0"?>
<menu restaurant="edible things"> <!-- Root Node -->
<section category="Fruit">
<item> Apple
<price variant="small"> 2.50 </price>
<price variant="large"> 3.75 </price>
</item>
<item> Banana
<price variant="small"> 1.85 </price>
<price variant="medium"> 2.00 </price>
<price variant="large"> 2.85 </price>
</item>
</section>
<section category="Instruments">
<item> Piano
<price variant="red"> 100.00 </price>
<price variant="yellow"> 3000.00 </price>
</item>
<item> Tuba
<price variant="red"> 60.00 </price>
<price variant="yellow"> 250.00 </price>
</item>
</section>
</menu>
我的目标是创建一个没有重复的价格变体的数组/列表。为此,我实现了以下PHP(在网页中收集):
<?php
foreach ($xml->section as $section) {
echo '<h2>'.$section['category'].'</h2><br />';
$arr = array();
foreach ($section->item as $item) {
foreach ($item->price as $price) {
if (!in_array($price['variant'], $arr)) {
array_push($arr, $price['variant']);
}
else {
}
}
}
$arrlength = count($arr);
for($x = 0; $x < $arrlength; $x++) {
echo $arr[$x];
echo '<br>';
}
}
?>
不幸的是,在这个例子中,我得到一个包含每个属性值的数组,包括重复。如果我将foreach循环切出,我只得到(a)属性中的第一项,或(b)所有项的第一个变量。
我意识到我在理解嵌套如何工作方面遇到了问题。如何使用唯一值构建数组?