как получить позицию симплексмлобуала php - PullRequest
1 голос
/ 15 декабря 2010

У меня есть следующий простой объектный файл xml:

[AuthorList] => SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [CompleteYN] => Y
        )

    [Author] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [ValidYN] => Y
                        )

                    [LastName] => van Tricht
                    [ForeName] => M J
                    [Initials] => MJ
                )

            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [ValidYN] => Y
                        )

                    [LastName] => Nieman
                    [ForeName] => D H
                    [Initials] => DH
                )

            [2] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [ValidYN] => Y
                        )

                    [LastName] => Bour
                    [ForeName] => L J
                    [Initials] => LJ
                )

            [3] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [ValidYN] => Y
                        )

                    [LastName] => Boerée
                    [ForeName] => T
                    [Initials] => T
                )

            [4] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [ValidYN] => Y
                        )

                    [LastName] => Koelman
                    [ForeName] => J H T M
                    [Initials] => JH
                )

            [5] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [ValidYN] => Y
                        )

                    [LastName] => de Haan
                    [ForeName] => L
                    [Initials] => L
                )

            [6] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [ValidYN] => Y
                        )

                    [LastName] => Linszen
                    [ForeName] => D H
                    [Initials] => DH
                )

        )
)

Теперь я хочу вывести позицию одного имени, например

позиция Фамилия Boeree 2 0f 6

(0 - начальный индекс)

Кто-нибудь знает это?

1 Ответ

1 голос
/ 15 декабря 2010

Используйте цикл for. Допустим, $ authorList - ваш простой XML-объект

$authorsCount = count($authorList->author);
$result=-1;

for($i=0;$i<$authorsCount;$i++){
  if($authorList->author[$i]->LastName =="Boeree"){
$result=$i;
break;  
}

if($result==-1) echo "Boereee not found";
else echo "position LastName Boree is {$result} of {$authorsCount}";

РЕДАКТИРОВАТЬ: отредактированный код для использования объекта simpleXML вместо массива

...