2
  1. ノードが存在しないかどうかを確認する方法は? 私は使っている

    if ( $item->branch()->siblings($tagNames['desc'])->text())

より良い方法はありますか?

  1. ORクエリを実行する方法はありますか? タグ A が存在する場合はその text() を取得し、そうでない場合は B の text() を取得しますか?

私は以下を使用しています:

 $desc1 = (  $item->branch()->siblings($tagNames['desc'])->text()  ?
$item->branch()->siblings($tagNames['desc'])   :
$item->branch()->siblings($tagNames['descAlternative']) ) ;

これは、物事を行う最も効率的な方法のようには見えません。

ありがとう

4

1 に答える 1

4

最初について:

QueryPath が一致するものを見つけられない場合、サイズは 0 です。したがって、次のことができます。

if (count($item) > 0) {
  // do whatever with $item
}

したがって、2 番目の例では、次のようにすることができます。

if (count($item->branch()->siblings($tagNames['desc']))) {
    $item->branch()->siblings($tagNames['desc']);
    $item->branch()->siblings($tagNames['descAlternative']) ) ;
}

しかし、別の方法があります。一度に 2 つのセレクターを渡すこともできます。

$item->branch()->siblings('desc, descAlternative')->text();

これで両方が選択されます。ただし、text()最初に一致したアイテムのテキストのみを返します。したがって、OR を実行する効果があります。

于 2012-05-23T00:39:49.810 に答える