foreach дважды подряд выбирает каждый елемент

12
V
На сайте с 10.01.2012
Offline
85
999

Приветствую, уважаемые.

При обработке XML документа и перебором элементов foreach почему-то при выборке получается что каждый элемент отображается дважды. В чем может быть причина?

Заранее благодарю за ответы.

siv1987
На сайте с 02.04.2009
Offline
427
#1

В руках, способе обработке, отображения элементов.

Mad_Man
На сайте с 10.11.2008
Offline
162
#2
Varenik:
Приветствую, уважаемые.
При обработке XML документа и перебором элементов foreach почему-то при выборке получается что каждый элемент отображается дважды. В чем может быть причина?

Заранее благодарю за ответы.

Пример исходного кода заметно ускорит решение проблемы.

дани мапов
На сайте с 06.09.2012
Offline
204
#3

А может быть в самом документе дубли, попробуйте небольшую часть документа прогнать через скрипт.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
V
На сайте с 10.01.2012
Offline
85
#4

не уверен что в руках... код как обычно... в самом XML дублей 100% нет... но вот такой нонсенс получается))

вот пример XML

http://ssmaker.ru/c6020f56.png

Вот пример кода обработки:


$data = file_get_contents($query);
$xml = new SimpleXMLElement($data);

foreach ($xml->F as $items) {
$data_list .= <<<HTML
<tr class="offer">
<td>
<span class="from_id">{$items['ID']}</span>
...
</td>
</tr>
HTML;
}
echo $data_list;

Выводит:

ID: 38
ID: 38
ID: 4
ID: 4
ID: 26
ID: 26
...

***91; ***93; - квадратные скобки

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#5

Всё очень просто.

Если вы сделаете:

print_r($xml->F);

Увидите, что там идёт так:

$xml->F[0]=45;

$xml->F[id]=45;

или что-то вроде этого.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
V
На сайте с 10.01.2012
Offline
85
#6
LEOnidUKG:
Всё очень просто.
Если вы сделаете:

print_r($xml->F);

Увидите, что там идёт так:

$xml->F[0]=45;
$xml->F[id]=45;

или что-то вроде этого.

Выдало:

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#7

Ссылку дайте что там в $query

V
На сайте с 10.01.2012
Offline
85
#8
LEOnidUKG:
Ссылку дайте что там в $query

ссылку не получится, поскольку она генерируется каждый раз новая

прилаживаю файл [ATTACH]140276[/ATTACH]

txt Fares.txt
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#9

Чёт вообще не понимаю как у вас

<span class="from_id">{$items***91;'ID'***93;}</span>

вообще что-то выводит. Объясните. Там же нет никакого ID в таком допуске.

Сделал так:

$data = file_get_contents('Fares.txt');

$simple = simplexml_load_string($data);

$arr = json_decode( json_encode($simple) , 1);

foreach ($arr['F'] as $items) {

echo $items['@attributes']['Id'].'<br>';

}

Никаких дублей нет.

V
На сайте с 10.01.2012
Offline
85
#10
Там же нет никакого ID в таком допуске.

Видать есть)))

http://ssmaker.ru/7baddf00.png - вот что получаю в конечном итоге - дважды выборка. Сам понимаю что оно не должно так работать, но факт остается фактом.

P.S. А зачем вы обертку JSON encode/decode использовали? С SimpleXML-объектами и так же можно работать как с массивами. Это более правильно или просто своя методика/привычка?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий