1
がここでそれを簡単にするために、すべての値のための最後の日付を取得することは、私が持っているものであるPHPのforeachのは
名の1)配列:
array (size=953)
0 => string 'name1' (length=5)
1 => string 'name2' (length=5)
2)MongoDBのドライバでカーソルからのforeach:
foreach($cursor as $key => $document) {
}
このforeachに私は各name
の最新の日付を取得したいと考えています。 最新の日付から最も古い日付に反復しています.の最新の日付があれば、ループを続行したくありません。
配列にすべての名前の日付が来るまでどのようにループできますか?たくさんのデータがある可能性があるので、私はこのループを私の古い解決策よりも良くしたいと思っています。
多分このような何か?
foreach($cursor as $key => $document) {
if (!in_array($document->color->name, $array)) {
$position[] = array(
'name' => $document->color->name,
'dateTime' => $document->color->dateTime,
);
}
$array[] = $document->color->name;
}
ソリューション
foreach($cursor as $key => $document) {
if(!isset($array[$document->color->name])) {
$position[] = array(
'name' => $document->color->name,
'dateTime' => $document->color->dateTime,
);
}
$array[$document->color->name]=true;
}
コードは問題ありませんが、 '$ array [$ document-> color-> name] = true;と' if(!array($ document-> color-> name))) 'bescause in_array()の方が速く、無駄なデリゲートで配列を埋めることはありません。 – JustOnUnderMillions
それは働いているようです、ありがとうございます。私は実際にパフォーマンスの変化を見ることはできませんが、この方法は何千ものデータが良いでしょうか? – Baptiste
phpのキーチェックは高速です(PHPの内部配列のもの)。配列検索では、ルックアップ(すべての値をチェックする前にキャストしているかもしれません)が見つかるまで、すべての値をチェックする必要があります。大きな配列(500.000+)でベンチマークを行うと、あなたが表示されます。 – JustOnUnderMillions