我一直包裹着我的头几天...复杂的阵列合并
我有几个数组需要合并成一个单一的数组。在它们合并的顺序是非常重要的并且是简单地在它们出现的全局阵列中(如下面的实例)的顺序:
$input1 = array(
array(
'context' => 'aa', 'id' => 1, 'view' => 1, 'update' => 1,
),
array(
'context' => 'bb', 'id' => 2, 'view' => 0, 'update' => 0,
)
);
$input2 = array(
array(
'context' => 'cc', 'id' => 3, 'view' => 0, 'update' => 1,
),
array(
'context' => 'dd', 'id' => 4, 'view' => 0, 'update' => 0,
),
array(
'context' => 'ee', 'id' => 5, 'view' => 1, 'update' => 0,
)
);
$input3 = array(
array(
'context' => 'ff', 'id' => 6, 'view' => 1, 'update' => 1,
),
array(
'context' => 'gg', 'id' => 7, 'view' => 1, 'update' => 0,
),
);
$global = array($input1, $input2, $input3);
每个输入阵列本身包括几个子阵列中等于结构的;例如,参见http://pastebin.com/fQMUjUpB。该pastebin代码还包含所需的输出。 输出数组应该包含:
- 单级阵列
- 在“合并的下一个输入数组”,即树状直通。在两个输入阵列之间的合并期间应该进行每个可能的子阵列的交叉组合
- 每个组合的密钥应该被生成为与对应的
context
和id
元素(用一个加号粘合)的连接字符串, &符号(&); e.g:context1+id1&context2+id2
- 对于下一个合并先前得到的数组应,以便用于例如从上方变得
context1+id1&context2+id2&context3+id3
- 所得
view
和update
元件由合并过程中简单地乘以它们相应的值来计算。
$output = array(
'aa+1&cc+3&ff+6' => array('view' => 0, 'update' => 1),
'aa+1&cc+3&gg+7' => array('view' => 0, 'update' => 0),
'aa+1&dd+4&ff+6' => array('view' => 0, 'update' => 0),
'aa+1&dd+4&gg+7' => array(...),
'aa+1&ee+5&ff+6' => array(...),
'aa+1&ee+5&gg+7' => array(...),
'bb+2&cc+3&ff+6' => array(...),
'bb+2&cc+3&gg+7' => array(...),
'bb+2&dd+4&ff+6' => array(...),
'bb+2&dd+4&gg+7' => array(...),
'bb+2&ee+5&ff+6' => array(...),
'bb+2&ee+5&gg+7' => array(...)
);
如何遍历$global
时可能?
我可能已经相当模糊(这真的很难解释!)表达自己,但希望它当你在引擎收录代码看一看变得更加清晰......
任何帮助将不胜感激!
你永远不会有超过将3个数组输入到$ global数组中? – Maxime 2014-11-08 20:39:19
您使用哪种算法在输出数组中获取该索引(如'aa + 1&cc + 3&ff + 6')? – 2014-11-08 20:41:08
@Maxime $ global中输入数组的数量是变化的 – Propaganistas 2014-11-08 20:46:39