1

私はこの構造に似ているphpQueryいくつかを解析するために使用しています:HTML

<div>
    <span>Name</span>
    <span>John</span>
    <span>Age</span>
    <span>23</span>
    <span>Location</span>
    <span>London</span>
</div>

このすべての情報を連想配列に収集する必要があるので、次のようなことをしています。

$doc = new phpQuery($html);
foreach($doc['div span'] as $span){
    $text = pq($span)->text();
    // do some other stuff with $text
}

$doc$doc['div span']は、、とphpQueryObjectを実装するsであることに注意してください。IteratorCountableArrayAccess

ここで、このデータを相互に関連付けるために、現在の状態(タイトルまたは値)を格納する変数を使用する必要がありますが、これはあまり洗練されていません。私がやりたいのは、一度に2つのアイテムを繰り返すことができるようにすることです。私が見つけた解決策の1つは、foreachすべてのアイテムを配列に追加してすべてのオブジェクトを反復処理し、その後、またはその配列でnext()またはeach()を使用して、whileループで一度に2つのアイテムを取得することでしたが、これはまったく役に立ちません。next()オブジェクトを使用したりeach()、オブジェクト上で使用したりするphpQueryと、パブリックプロパティが取得されるだけであり、それは私が望んでいることではないことに注意してください。これを実行して素晴らしいコードを作成する方法はありますか?


注:この質問はに関連してphpQueryいますが、一般的な質問であり、知識phpは含まれていません。phpQuery

4

1 に答える 1

1

質問で述べたように、phpQuery実装しIteratorます。

したがって、これはおそらくあなたが望むことを行うことができる最もクリーンな方法だと思います:

$doc = new phpQuery($html);
$elements = $doc['div span'];

foreach($elements as $span){
    $key = pq($span)->text();
    $elements->next();
    $value = pq($elements->current())->text();
}
于 2012-11-26T04:33:01.213 に答える