以下代码用于从下面的XML文件中检索“store”元素的值,并将值插入数组(storeArray)。我不希望重复值放入数组(IE我不希望Best Buy插入两次),所以我使用的是in_array方法 防止重复。
此代码不会阻止重复(IE Best Buy会显示两次):
$xmlDoc = simplexml_load_file("products.xml");
$storeArray = array();
foreach($xmlDoc->product as $Product) {
echo "Name: " . $Product->name . ", ";
echo "Price: " . $Product->price . ", ";
if( !in_array( $Product->store, $storeArray )) {
$storeArray[] = $Product->store;
}
}
foreach ($storeArray as $store) {
echo $store . "<br>";
}
但是这段代码确实有效:
$practiceArray = array('Product1', 'Product2', 'Product3');
if (in_array("Product1", $practiceArray)) {
echo "Is in array";}
else {
echo "NOT in array";
}
有什么建议吗?
这是XML文件:
<products>
<product type="Electronics">
<name> Desktop</name>
<price>499.99</price>
<store>Best Buy</store>
</product>
<product type="Electronics">
<name>Lap top</name>
<price>599.99</price>
<store>Best Buy</store>
</product>
<product type="Hardware">
<name>Hand Saw</name>
<price>99.99</price>
<store>Lowes</store>
</product>
</products>
答案 0 :(得分:2)
尝试这样做
if( !in_array( (string)$Product->store, $storeArray )) {
$storeArray[] = (string)$Product->store;
}
因为$Product->store
不是字符串:它是SimpleXMLElement
对象。因此,您应该在操作之前将其转换为字符串。