来自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例子。
答案 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;
}
}