我對如何在3個PHP數組中找到所有「對」和「三元組」感到茫然。我的陣列是這樣的:查找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來完成)
- 構建第四個數組,將所有條目連接起來,並將相同的名稱(通過比較「清理過的」字段)相加重量(顏色無關緊要)
- 由於這些任務是相似的,所以我想在同一時間完成它們,並將複雜度降至最低
這很難解釋,所以我用視覺表現了它。
顏色:
Colors http://www.tsiomenko.com/1.png
重量:
Weights http://www.tsiomenko.com/2.png
我有一定的工作代碼,但它是很長的,醜陋的,並具有一些如N^3的複雜性 - 我使用嵌套for循環多次遍歷所有的數組,直到我有我需要的。儘管我正在處理非常小的數組,但我想知道如何有效地完成這項工作,因爲我很好奇別人會如何處理這個問題。歡迎使用僞代碼來解決這個問題,而不是PHP。
您如何確定條目的主色,例如你怎麼知道當Lisa在數組1中具有「綠色」和數組2中的「黃色」時要設置哪種顏色?將選擇哪種顏色?此外,在該示例中,顏色是「空白」。你從哪裏得到顏色分配? – Gordon
@戈登我不認爲這很重要(它實際上只是'f(姓名)') - 在輸出中,同一人(在3次輸入中出現2/3次)有同色高光。 – 2013-01-08 06:56:22
@戈登 - 只要每組相同名稱都有自己的顏色,挑選的顏色就不重要了。現在我只是從預製數組中拉出一個隨機顏色,然後確保顏色不會再被選中。還應該提到每個數組是一組(即,單個數組內的所有名稱都是唯一的)。 – user1890572