DomenForum.net

DomenForum.net (https://domenforum.net/index.php)
-   Программирование (https://domenforum.net/forumdisplay.php?f=26)
-   -   XML нужно выбрать конкретные значения (https://domenforum.net/showthread.php?t=205006)

Port_Artur 07.09.2016 17:15

XML нужно выбрать конкретные значения
 
Перебираю записи XML чтобы получить значения tit и ta обычно так:

$xmlres = simplexml_load_string($xml);

foreach ($xmlres->sto as $sto) {
$t=$sto->sta->tit;
$i=$sto->sta->cod->ta;}

Так делаю когда много записей с именем STO и нужно перебрать все значения.

Сейчас мне нужно получить значения tit и ta в переменные $t и $i обратившись в XML конкретно только к 1-й записи STO и ко 2-й.

Как мне это сделать?
Подскажите пожалуйста.

passport 08.09.2016 09:07

Ну а если просто поставить счётчик

Код:

$ii = 0;
foreach ($xmlres->sto as $sto) {
    if (++$ii > 2)
        break;

    $t = $sto->sta->tit;
    $i = $sto->sta->cod->ta;
}


Port_Artur 08.09.2016 10:38

Можно и так, просто думал можно обратиться конкретно к определённой записи. Не только к 1 или 2, а например к 5 или 15. Просто ничего не нашёл в сети, думал может кто знает.

passport 08.09.2016 11:41

Ну, как вариант, попробуйте так.

Код:

$numRec = 15; // номер записи, которую хотим прочитать

echo '<br/>-- Запись #' . $numRec . ' ';
if (!isset($xmlres->sto[$numRec]))
        echo 'не существует --';
else {
        $t = $xmlres->sto[$numRec]->sta->tit;
        $i = $xmlres->sto[$numRec]->sta->cod->ta;
        echo '--<br/> $t = ' . $t . '<br/>' . ' $i = ' . $i . '<br/>-- Конец записи #' . $numRec . ' --';
}


Mendel 09.09.2016 15:39

По логике у нас SimpleXMLElement implements Traversable
ArrayAccess я тут не вижу. Так что не должно оно сработать.
Но если хочется красоты, а не кошмариков (да и скорость выше)
то используйте iterator_to_array
Например
$sto = iterator_to_array($xmlres->sto);


Текущее время: 02:36. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Техническая поддержка — DevArt.PRO. Перевод: zCarot.