使用相同的部分计算特定的数组值

时间:2016-06-09 14:09:40

标签: php arrays

我发现很多样本如何计算数组中的位置或事件,但实际上这并不能解决我的问题。

My Array看起来像:

$foo = array(
          "foo"=>"bar",
          "bar"=>"foo",
          "hello"=>"world",
          "world"=>"hello",
          "grT1"=>"A",
          "grT2"=>"B",
          "grT3"=>"C",
          "grT4"=>"D",
          "grT5"=>"E",
          "gr1"=>2,
          "gr2"=>0,
          "gr3"=>,
          "gr4"=>5,
          "gr5"=>
)

我想要实现的是计算我的数组中有多少gr{i}

问题是,我不想要计数grT{i}。因此,此样本的结果应为 5

在这种情况下,

array_count_values对我没有帮助。

我的尝试atm是:

$count = 0;
for($i=0;$i<count($foo);$i++){
    if(array_key_exists("gr".$i, $foo)){
        $count++
    }
}

这是唯一的方法吗?还是有更好的方式?

编辑: 因为我需要循环的结果(for)我想摆脱这个循环。

2 个答案:

答案 0 :(得分:1)

array_reduce()将完成这项工作

$pathname = "./test.txt";

答案 1 :(得分:1)

使用array_keysarray_filter函数的替代解决方案:

$count = count(array_filter(array_keys($foo), function($v){
    return preg_match('/^gr\d+?/',$v);
}));
// $count is 5