php foreachを2回繰り返す
-
12-12-2019 - |
質問
この問題に対してさまざまな解決策を試してきましたが、成功しませんでした。問題はこれです:
Zend_Search_Lucene からの結果がいくつかあり、次の ID を持つ 3 つの結果が得られます。2、3、4
次に、Doctrine で作成された無関係なクエリからのレコードがいくつかあり、ID ID を持つ 2 つのレコードが得られます。2と3。
Search Lucene の結果は、合計 3 つのレコードとしてページに表示されます。これらのうち、ID が Docrine クエリの別の ID と等しいかどうか、つまり一致があるかどうかを確認する必要があります。2=2 、 3=3 は何かを表示します (そうでない場合):2=3 は別のものを示します。
FOREACH 2 回と IF ELSE ステートメントを使用してこれを実行しようとしましたが、ページ上で 2 つの結果が得られます。
foreach($this->results as $r): // records form search Lucene ie 2, 3, 4
foreach($this->records2 as $r2){ // records from another table (query) 2 and 3
if(($r2['id']) == ($r->id)) {
// do something
} else {
// dosothing else
}
...等。
レコードが 2 回繰り返される理由は理解できますが、正しい結果を得る正しい方法がわかりません。誰か助けてくれませんか?私が何か愚かなことをしているのであれば、お詫び申し上げます。:)
解決
foreach(... $r) {
$found = false;
foreach(... $r2) {
if (... == ...) {
$found = true; break;
}
}
if ($found) {
// something
} else {
// something else
}
}
. 他のヒント
内側を排除することもできます foreach
配列が $this->records2
は次のような地図です。
array(2 => array('id' => 2));
次に、最初の foreach 内で次のようにします。
if (isset($this->records2[$r->id])) {
// do something
} else {
// do something else
}
このようにして、 // do something else
そして // do something
ループごとに最大 1 回実行されます。
所属していません StackOverflow