我确信之前会有这样的事情发生,但我很难在这里找到我正在寻找的东西。我在这里已经多次阅读过以前的答案,但之前从未问过或回答过自己!
我正在使用SimpleXML读取对Amazon SimpleDB查询的响应,结果在表单中;
<Item>
<Name>Item 1</Name>
<Attribute>
<Name>Title</Name>
<Value>Item 1 Title</Value>
</Attribute>
<Attribute>
<Name>URL</Name>
<Value>Item 1 URL</Value>
</Attribute>
<Attribute>
<Name>Description</Name>
<Value>Item 1 Description</Value>
</Attribute>
<Attribute>
<Name>Site</Name>
<Value>Item 1 Site</Value>
</Attribute>
</Item>
<Item>
<Name>Item 2</Name>
<Attribute>
<Name>Title</Name>
<Value>Item 2 Title</Value>
</Attribute>
<Attribute>
<Name>URL</Name>
<Value>Item 2 URL</Value>
</Attribute>
<Attribute>
<Name>Description</Name>
<Value>Item 2 Description</Value>
</Attribute>
<Attribute>
<Name>Site</Name>
<Value>Item 2 Site</Value>
</Attribute>
</Item>
我在阅读项目顶部的'Name'时没有问题,使用PHP中的foreach()列出所有这些,我设法做同样的事情来创建一个'Key / Value列表'成对循环列表。
我无法弄清楚如何选择(例如)特定的描述值,将其放在我想要的页面中。
选择Item-&gt; Attribute会在表单中给出一个数组;
[Name] -> Title
[Value] -> Item 1 Title
这就是我有点陷入困境的地方。仍然在我现有的foreach()循环遍历项目,我想要一个'属性'数组,所以我可以选择,例如;
[Title] -> Item 1 Title
[URL] -> Item 1 URL
等等。
我很好地选择了这些项目并回应了他们的名字,这一点真的是我得到的。
由于这是一个新手问题,我确信它之前已经被问过或回答过,我在其他地方看不到答案,所以如果有人能指出我,我会非常感激!
先谢谢
答案 0 :(得分:1)
在foreach循环中,创建一个新的foreach循环以创建属性数组。
类似
<?php
foreach($items as $item)
{
$attributes = array();
foreach($item->Attribute as $attribute)
{
$attributes[$attribute->Name] = $attribute->Value;
}
echo 'Item name:'.$item->Name.'<br />';
echo 'Item attribute URL:'.$attributes['URL'].'<br />';
echo 'Item attribute Description:'.$attributes['Description'].'<br />';
}
?>
注意:未经测试,根据需要进行调整
答案 1 :(得分:0)
我前一段时间尝试过将Twitter集成到网站中。
我在搜索XML2ARRAY时找到了一段代码。正如您可能猜到的,这会将XML数据转换为多维数组,如果您知道元素标题,则可以使用FOREACH或仅命名数组调用。
然后,您可以检查每次它命中一个名为ATTRIBUTE的元素,然后使用NAME作为键并将VALUE作为值将该数据保存到新数组,然后在完成时取消设置ATTRIBUTE(为了更好的内存处理)并在新数组值的数组中设置一个新键。
希望有所帮助