Почему я не могу фильтровать результаты по значению атрибута, а не по индексу?
Что-то вроде этого терпит неудачу.
foreach ($portfolio->clientGroup[$id]->client['name=foo']->src as $src) { echo $src . '<br />'; } Но это работает.
 foreach ($portfolio->clientGroup[$id]->client[0]->src as $src) { echo $src . '<br />'; } 
       
		Это не работает, потому что SimpleXML – это облегченная реализация. Кроме того, вы не можете приступать к работе, если у вас нет спецификации.
  Вы ищете функцию xpath объектов SimpleXMLElement , то есть: 
 foreach ($portfolio->clientGroup[$id]->xpath("client[@name='foo']/src") as $src) { echo $src . '<br />'; } 
SimpleXML обеспечивает доступ к вашему документу в виде вложенного массива. Невозможно разместить выражение XPath в качестве индекса массива.
Попробуйте что-нибудь вроде:
 $query = "client[@name='foo']/src"; // if name is an attribute $query = "client[name='foo']/src"; // if name is a child element foreach ($portfolio->clientGroup[$id]->xpath($query) as $src ) { echo $src . '<br />'; }