3 つの PHP 配列内ですべての「ペア」と「トリプレット」を見つける方法がわかりません。私の配列は次のようになります。
Array
(
[0] => Array
(
[sanitized] => lisa
[original] => Lisa
[weight] => 100
[color] => blank
)
[1] => Array
(
[sanitized] => jack
[original] => Jack
[weight] => 93
[color] => blank
)
...
これらの配列は 3 つあります。これらは常に整数キーでソートされ、常に 10 個のインデックス (0 ~ 9) が含まれます。私がやろうとしていることは次のとおりです。
- 2 つの配列または 3 つの配列すべてで (「サニタイズされた」フィールドを比較して) 同一の名前のインスタンスを見つけ、それらの「色」を同じになるように変更します (つまり、3 つすべての交点だけを見つけたくありません)。配列 - array_intersect で実行できます)
- すべてのエントリを結合し、同じ名前を (「サニタイズされた」フィールドを比較して) 重みを合計して結合する 4 番目の配列を作成します (色は関係ありません)。
- これらのタスクは似ているため、同時に実行し、複雑さを最小限に抑えたいと考えています
これは説明が難しいので、視覚的に表現しました。
色:
色 http://www.tsiomenko.com/1.png
重み:
ウェイト http://www.tsiomenko.com/2.png
私はいくつかの実用的なコードを持っていますが、それは本当に長くて醜く、N^3 のような複雑さがあります - ネストされた for ループを使用して、必要なものが得られるまですべての配列を複数回トラバースします。私は非常に小さな配列で作業していますが、他の人がこの問題にどのようにアプローチするのか興味があるので、これを効率的に行う方法を知りたいです。PHP の代わりに、この問題へのアプローチ方法に関する疑似コードを歓迎します。