Код ниже используется для извлечения значения элемента «store» из файла XML ниже и вставки значений в массив (storeArray). Я НЕ хочу, чтобы в массив было добавлено повторяющееся значение (IE не хочу, чтобы Best Buy вставлялся дважды), поэтому я использую метод in_array для предотвращения дублирования.Функция in_array PHP неправильно работает с XML
Этот код не предотвращает дублирование (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>
Какой тип переменной можно было бы отличать изначально, кроме строки? –
@SetSailMedia вы можете использовать любой тип (массив) (bool) (строка) ... проблема в том, что результат - то, что вы ожидали. :) –
Спасибо! Это сработало! –