Может ли кто-нибудь помочь мне объяснить, почему следующее возвращает дубликаты данных?
<?php
$xml_test = '<array key="results">
<array key="123">
<string key="mask">1234</string>
</array>
<array key="987">
<string key="mask">5678</string>
</array>
</array>';
$load_test = simplexml_load_string($xml_test);
foreach ($load_test as $array)
{
$mask = $array->xpath('//string[@key="mask"]');
print 'Mask: ' . $mask[0] . '<br />';
}
Возвращает:
Mask: 1234
Mask: 1234
Если я добавлю print_r ($ array) в цикл foreach, я получу:
SimpleXMLElement Object
(
[@attributes] => Array
(
[key] => 123
)
[string] => 1234
)
Mask: 1234
SimpleXMLElement Object
(
[@attributes] => Array
(
[key] => 987
)
[string] => 5678
)
Mask: 1234
Что, черт возьми, происходит? Почему я получаю дублирующиеся маски, когда использую выражение xPath, когда оба массива $ явно не содержат дублирующиеся данные.