我有一个包含产品的XML,我使用此函数将其从XML转换为Array http://www.bin-co.com/php/scripts/xml2array/ 当我在XML文件中只有一个属性而我试图将第一个数组转换为多维时,我遇到了问题。
[attributes] => Array
(
[attribute] => Array
(
[name] => 44
[quantity] => 1
[availability] => 1
)
)
到
[attributes] => Array
(
[attribute] => Array
(
[0] => Array
(
[name] => 40
[quantity] => 1
[availability] => 1
)
)
)
我需要一个循环的多维数组
foreach($products["attributes"]["attribute"] as $attr) {
echo $attr["name"]
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<id>1006</id>
<sku>360116 05</sku>
<attributes>
<attribute>
<name>44</name>
<quantity>1</quantity>
<availability>1</availability>
</attribute>
</attributes>
</product>
<product>
<id>2501</id>
<sku>AQ4040</sku>
<attributes>
<attribute>
<name>42.5</name>
<quantity>13</quantity>
<availability>2</availability>
</attribute>
<attribute>
<name>44</name>
<quantity>18</quantity>
<availability>2</availability>
</attribute>
</attributes>
</product>
</products>
答案 0 :(得分:0)
可能你从这里得到一些解决方案http://us1.php.net/xml_parse_into_struct没试过,但希望它会有所帮助。请参阅示例#3 parsemoldb.php,类似于您的函数文件。
答案 1 :(得分:0)
如果你需要了解这种结构中的项目,使用SimpleXML可能更简单。以下代码非常简单地访问数据。
<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );
$xmlText = <<< XML
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<id>1006</id>
<sku>360116 05</sku>
<attributes>
<attribute>
<name>44</name>
<quantity>1</quantity>
<availability>1</availability>
</attribute>
</attributes>
</product>
<product>
<id>2501</id>
<sku>AQ4040</sku>
<attributes>
<attribute>
<name>42.5</name>
<quantity>13</quantity>
<availability>2</availability>
</attribute>
<attribute>
<name>44</name>
<quantity>18</quantity>
<availability>2</availability>
</attribute>
</attributes>
</product>
</products>
XML;
$doc = simplexml_load_string($xmlText);
foreach ( $doc->product as $product) {
echo "Product id=".$product->id.",";
foreach ( $product->attributes->attribute as $attribute){
echo "name:".$attribute->name.",";
}
echo "\n";
}
echo "Complete";
其输出是......
Product id=1006,name:44,
Product id=2501,name:42.5,name:44,
Complete
使用simple_xml_加载时,您可以访问子元素,就好像它们是上面元素的属性一样,因此$product->attributes->attribute
使用每个产品,然后选择属性元素,然后选择其中的每个属性元素。
要从文件加载,请使用simplexml_load_file()。
答案 2 :(得分:0)
我认为这是你可能正在寻找的东西:
foreach($products["attributes"] as $product) {
foreach($product["attribute"] as $attr) {
echo $attr["name"]
}
}