duanhan5230 2015-05-12 20:56
浏览 34

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

I'm using PHP to collect attributes from an XML file.

Eg:

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

My goal is to create an array/list of the price variants with no duplicates. To that end I have implemented the following PHP (collected in a web page):

<?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>';
        }
}
?>

Unfortunately, in this instance I get an array that contains every attribute value, including duplications. If I cut either foreach loop out, I get only (a) attributes for the first item in section, or (b) the first variant for all items, respectively.

I realize that I'm having a problem with understanding how nesting works. How do you build an array with only unique values?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
    • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
    • ¥15 手机接入宽带网线,如何释放宽带全部速度
    • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
    • ¥15 ETLCloud 处理json多层级问题
    • ¥15 matlab中使用gurobi时报错
    • ¥15 这个主板怎么能扩出一两个sata口
    • ¥15 不是,这到底错哪儿了😭
    • ¥15 2020长安杯与连接网探
    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么