Загрузка первого вхождения элемента в массив - PullRequest
0 голосов
/ 15 ноября 2011

Я использую SimpleXML для разбора RSS-канала, и если атрибут в возвращаемых массивах SimpleXML совпадает с моей строкой данных показа.но некоторые элементы дублируются в XML-файле, и я хочу использовать только их первое вхождение.но я получаю все дублированные результаты.

foreach($feed->city as $city){
    if(in_array($city['Name'], $cities)){
        echo $city['Name'].'<br />';
    }
}

где $ feed-> city - мои данные XML, а $ city - мой массив.

1 Ответ

1 голос
/ 15 ноября 2011

Я бы использовал библиотеку php Xpath для этого.Xpath 2.0 может сделать это напрямую, но встроенный язык Xpath 1.0 все еще очень близко подходит к вам.

    <!-- language: lang-php -->
$xmlDocument = new DOMDocument();
    if ($xmlDocument->load('file.xml')) {
    $xpath = new DOMXPath($xmlDocument);
    $nodeList = $xpath->query('//city/@Name', $xmlDocument);

отсюда у вас есть класс DOMNodeList.бросить его в массив и удалить дубликаты.Сейчас у меня нет php-среды, чтобы закончить, но я хотел предложить другое направление, чем просто simpleXML.

...