我对如何在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