ホームページ  >  記事  >  バックエンド開発  >  条件を満たす配列をインターセプトする

条件を満たす配列をインターセプトする

WBOY
WBOYオリジナル
2016-06-20 12:47:171177ブラウズ

$arr = Array(    6 => Array        (            id=> 358            level=> 6        )    4=> Array        (            id => 354            level => 4        )    5 => Array        (            id => 353            level => 5        ))

上記のような配列があり、キーの順序は適切な配列をインターセプトするために使用されます
上記の列のように、キーが前に 6 としてソートされている場合、およびキーは 6、4、5 としてソートされます。
$arr = Array
(
6 => Array
🎜>}
If array 順序が 5、4 の場合、6、2 つの
$arr = Array
(
5 => Array
(
id => 353
level => 5
) を取ります。
6 => 配列
(
id=> 358
level=> 6
)
)
4 が入っている場合 前のソートは 4,5 ,6,
$ arr = 配列
(
4 = & gt; 配列
(
ID = & gt; 354
レベル = & gt; 4
)
5 => 配列
(
id => 353
レベル => 5
)
6 => 配列
(
id= > 358
6 >




ディスカッションへの返信 (解決策)

順序が 6、4、5 の場合は 6 だけを取ります (最初または最後のものを取ると考えられます)

順序が 5、4、6 の場合、5 と 6 のみを取ります (これは両端を取ります)

順序が 4、5、6 の場合、取りますすべて (ルールが再び変更されました) いいね あなたのような変更可能なルールでプログラムを書くことは不可能です
コードを与えていないので、最適化について話す方法はありません

それを見た後、ルールに従うことだけが必要です。データのキーは、値を上方に取得します。


5、4、6。最初の値は 5 です。 5 より大きいもの (5 を含む)、つまり 5、6
4、5、6 1 つは 4。4 より大きいもの (4 を含む)、つまり 4、5、6

そして、ループするときに最初のデータのキー値を記録し、キーがより大きいかどうかを判断します。最初の値がそれより大きい場合は、
を記録するので、それがあるかどうかを心配する必要はありません7、8、9、またはそれ以上のデータです


それを確認した後、唯一のルールは、データの最初の部分のキーに従って、値を取得することです

5, 4, 6. 最初のものは 5. 5 より大きいもの (5 を含む) を取り、それは 5, 6
4, 5. 6 最初のものは 4. 4 より大きいものを取ります ( 4) を含む、つまり 4、5、6

次に、ループするときに、最初のデータのキーの値を記録し、毎回キーが最初の値より大きいかどうかを判断します。大きい場合は、

を記録します。7、8、9 以上のデータである場合、

が最初の値より大きい場合は、心配する必要はありません。 4,6,5、4,6 だけが取られます。パターンはないようです


次に、考えられる値の状況をすべてリストアップして、array_intersect_key

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。