0

嗨人们我需要你的帮助。假设我有一个数组。

$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 有多少个键。

我需要测试 testkey 的一个或多个值是否相等,如果他们把这个结果放在一个变量上。

由于 testkey 为 0,因此不考虑 2 和 6。

(0是我的默认值,我可以把它设为NULL)

3 和 4 的值为 1(首先匹配)。

1、5 和 7 的值为 2(匹配的第二个)。

然后我必须以某种方式存储这些值:

$matched = array();
    $matched[1] = array (2, 6);
    $matched[2] = array (1, 5, 7);

但我相信它可以做得更好。

谢谢你。

4

1 回答 1

0

我会$arrtestkey值对数组进行排序。这可以在 O(n lg n) 时间内完成。然后遍历排序的数组并将原始键添加到$matched[1]. 当testkey值发生变化时,您开始将下一个键值添加到$matched[2]等。

于 2013-10-01T20:09:39.190 回答