php数组值比较

时间:2013-10-01 20:01:20

标签: php arrays compare

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

$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);

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

谢谢。

1 个答案:

答案 0 :(得分:0)

我会按$arr值对数组testkey进行排序。这可以在O(n lg n)时间内完成。 然后迭代已排序的数组并将原始键添加到$matched[1]。当testkey值更改时,您开始将下一个键值添加到$matched[2]等。