嗨,伙计们,我需要你们的帮助。假设我有一个数组。
$arr = array(
1 => array(
key1 => something,
key2 => something,
key3 => something,
testkey => 3,
keyx...),
2 => array(
key1 => something,
key2 => something,
key3 => something,
testkey => 0,
keyx...),
3 => array(
key1 => something,
key2 => something,
key3 => something,
testkey => 2,
keyx...),
4 => array(
key1 => something,
key2 => something,
key3 => something,
testkey => 2,
keyx...),
5 => array(
key1 => something,
key2 => something,
key3 => something,
testkey => 3,
keyx...),
6 => array(
key1 => something,
key2 => something,
key3 => something,
testkey => 0,
keyx),
7 => array(
key1 => something,
key2 => something,
key3 => something,
testkey => 3,
keyx...),
n =>array(blabla)
)
我不知道$arr有多少个密钥。
我需要测试测试键的一个或多个值是否相等,如果它们将此结果放在变量上。
不考虑 2 和 6,因为测试密钥为 0。
(0 是我的默认值,我可以把它放到 NULL)
3 和 4 的值为 1(第一个匹配)。
1、5 和 7 的值为 2(匹配秒)。
然后我必须以某种方式存储这些值:
$matched = array();
$matched[1] = array (2, 6);
$matched[2] = array (1, 5, 7);
但我相信它可以做得更好。
谢谢。
我会按testkey
值对数组$arr
进行排序。这可以在 O(n lg n) 时间内完成。然后循环访问排序后的数组并将原始键添加到 $matched[1]
。当testkey
值更改时,您开始将下一个键值添加到 $matched[2]
等。