使用嵌套循环构建具有唯一值的数组(PHP / XML)

时间:2015-05-12 20:56:33

标签: php arrays xml nested-loops

我正在使用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)所有项的第一个变量。

我意识到我在理解嵌套如何工作方面遇到了问题。如何使用唯一值构建数组?

0 个答案:

没有答案