Выбор потомков первого результата с помощью xpath
У меня есть кусок XML, где одна и та же информация может появиться как дочерний элемент разных узлов. Такие как :
<root>
<category id=1>
<product id="ABC123" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
<size name="2XL"/>
<size name="3XL"/>
</sizes>
</product>
</products>
</category>
<category id=2>
<products>
<product id="ABC123" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
<size name="2XL"/>
<size name="3XL"/>
</sizes>
</product>
<product id="PPP543" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
</sizes>
</product>
</products>
</category>
Моя цель - выбрать размеры идентификатора продукта ABC123 и сохранить их в виде массива. Текущий код, который у меня есть:
$arrTest=array();
foreach($xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ]/sizes/size') as $size){
array_push($arrTest, $size["name"]);
}
$ productCall - это идентификатор, который я ищу. В данном случае это ABC123.
Выход S, M, L, XL, 2XL, 3XL, S, M, L, XL, 2XL, 3XL. Это означает, что он читает две записи, которые были найдены. Я ожидал этого, учитывая цикл foreach, но я не могу найти способ просто получить результат первого результата. Я попытался добавить [0] и [1]:
$y=$xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ][1]/sizes/size');
[0] ничего не возвращает, а [1] возвращает те же результаты, которые я уже получаю.
Я надеюсь, что это простой вопрос, что я упустил что-то простое или просто переосмыслил, так как раньше я не работал с xpath.