2013-05-03 28 views
0

我正在尝试不仅计算特定值出现在数组中的次数,还将输出限制为仅偶数结果。对Multidemsional数组的计数值进行分组

$quotes = array(
     array(
     'quote' => 1, 
     'from' => 'NC', 
    ), 
     array(
     'quote' => 2, 
     'from' => 'MA', 
    ), 
     array(
     'quote' => 3, 
     'from' => 'OH', 
    ), 
     array(
     'quote' => 2, 
     'from' => 'MA', 
    ), 
     array(
     'quote' => 1, 
     'from' => 'NC', 
    ), 
    ); 

如何可以通过这个阵列过滤计数的每个“报价”倍量,然后显示结果,其中的计数> 1

+0

每一个独特的“报价'显示偶数次 - 你是什么意思? – raidenace 2013-05-03 21:32:27

+0

@Raidenance,过滤此数组只能重复值。在这种情况下,只应显示1,而忽略2&3,因为它们只会在 – MLB 2013-05-03 21:38:36

+0

已经尝试过我的解决方案时才出现? – michi 2013-05-05 18:51:02

回答

0
$result = array_map('unserialize',array_keys(array_diff(array_count_values(array_map('serialize',$quotes)),array(1)))); 

工作原理:

  1. 使一维阵列由serialize
  2. 计的所有值
  3. 删除使用array_diff
  4. array_count_values认沽值成键表示,计数1所有值,检索键作为值
  5. unserialize把它放回原设计

看到它的工作:http://codepad.viper-7.com/9RPjdK

+0

这很好,但一个问题。 只有在'quote'重复时才可以设置为过滤吗? 我会在每个数组中输入更多的数据,这可能会混淆这一行的过滤。 – MLB 2013-05-14 21:54:21

相关问题