2014-11-12 5 views
-1

возможно, чтобы xpath мог принимать динамические значения внутри foreach ;;Вставить динамическую переменную для xpath внутри foreach

p.e я есть попробовать с сильфона код и я получаю: Попытка получить свойство ошибки необъектных

foreach ($srcov as $src) { 
    $qCoverXml = $coverXml->xpath('//cover/code[.= "'. $srcC->Code .'" ]/parent::*'); 
    echo $qCoverXml->name; 
} 

я делаю что-то неправильно; благодаря

+0

Почему бы тебе просто не попробовать его? – Dinistro

+1

Да, возможно, это все, что вы хотите знать? – sergio

+0

ОК. Я сожалею, что попробую еще раз :) Я использую вышеуказанный код, и я получаю Trying для получения свойства ошибки, отличной от объекта, если вместо этого я использую этот код вне цикла foreach, он работает отлично. – Sakkoulas

ответ

0

хорошо, цитируя SimpleXml документацию для xpath() method:

Возвращает массив объектов SimpleXmlElement или FALSE в случае ошибки.

Итак, есть 2 вещи, которые вы сделали неправильно.

  1. вы должны проверить ОШИБОК случаев
  2. следует рассматривать результат как массив

это будет выглядеть примерно так:

foreach ($srcov as $src) { 
    $qCoverXml = $coverXml->xpath('//cover/code[.= "'. $srcC->Code .'" ]/parent::*'); 

    if (false === $qCoverXml) { 
     echo "ERROR: request for {$srcC->Code} failed somehow\n"; 
     continue; 
    } 

    if (count($qCoverXml) == 0) { 
     echo "ERROR: request for {$srcC->Code} didn't return any elements\n"; 
     continue; 
    } 

    echo $qCoverXml[0]->name."\n"; 
} 
+0

спасибо JimiDini, что вы правы, я не рассматривал результат как массив ar, теперь он работает как шарм, спасибо – Sakkoulas

Смежные вопросы