通过PHP中的多维数组

时间:2017-09-11 17:33:33

标签: php arrays loops

来自XML文件

<items>
    <item type="blue" />
    <item type="red" />
    <item type="blue" />
    <item type="red" />
    <item type="blue" />
    <item type="red" />
    <item type="blue" />
    <item type="red" />
    <item type="blue" />
    <item type="red" />
    <item type="blue" />
    <item type="red" />
</items>

我通过SimpleXML得到以下数组:

object(SimpleXMLElement)#1 (1) { 
["item"]=> array(12) { 

    [0]=> object(SimpleXMLElement)#2 (1) { 
        ["@attributes"]=> array(1) { 
            ["type"]=> string(4) "blue" 
        } 
    } 

    [1]=> object(SimpleXMLElement)#3 (1) { 
        ["@attributes"]=> array(1) { 
            ["type"]=> string(3) "red" 
        } 
    } 

    [2]=> object(SimpleXMLElement)#4 (1) { … }
    [3]=> object(SimpleXMLElement)#5 (1) { … }
    [4]=> object(SimpleXMLElement)#6 (1) { … }
    [5]=> object(SimpleXMLElement)#7 (1) { … }
    [6]=> object(SimpleXMLElement)#8 (1) { … }
    [7]=> object(SimpleXMLElement)#9 (1) { … }
    [8]=> object(SimpleXMLElement)#10 (1) { … }
    [9]=> object(SimpleXMLElement)#11 (1) { … }
    [10]=> object(SimpleXMLElement)#12 (1) { … }
    [10]=> object(SimpleXMLElement)#12 (1) { … }
    [11]=> object(SimpleXMLElement)#13 (1) { … }
} }

我想循环浏览所有项目并选择前三个类型为蓝色:

1) Iter through all items
2) Check whether type == 'blue'
3) If yes, append the whole item-structure to another array or echo something

我用Python做了很多,我可以在解析对象(一个dict数组)中导航,只需知道XML的基本结构。但在PHP中,我并不了解阵列中的元素是如何处理的。

当我在这里查看教程或其他问题时,在我看来,没有像xpath那样的路径系统。我还没有像我一样找到一个basix例子。

1 个答案:

答案 0 :(得分:1)

你可以这样做

$finalArray = [];
foreach($var['items'] as $item)
{
 if($item['@attributes']['type'] === 'blue')
   {
      $finalArray[] = $item;
   }
//check if you have 3 items already on the new array so that it will stop the loop
if(count($finalArray) == 3){
 return $finalArray;
}

}