php - 计算具有相同部分的特定数组值

标签 php arrays

我找到了很多示例如何计算数组中的位置或出现次数,但实际上这并不能解决我的问题。

我的阵列看起来像:

$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) 的结果,所以我想摆脱这个循环。

最佳答案

array_reduce() 将完成这项工作

$count = array_reduce(array_keys($foo), function($c, $k){
  return preg_match('/^gr\d+$/', $k) ? ++$c : $c;
}, 0);

关于php - 计算具有相同部分的特定数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37728350/

相关文章:

php - PDO 未输出正确的行数

php - 从另一个脚本向 Ratchet WebSocket 服务器发送消息

php - 按用户名获取最后一条消息对话

javascript - 如何使用lodash将键值对添加到树结构对象

php - 如何格式化一个简单的 PHP 字符串数组?

php - 如何在操作数值为NULL时切换到IS运算符?

php - 由于 E_WARNING,我是否需要在 PHP 中尝试/捕获 opendir?

ruby - 在 Ruby 中用 Nil 替换数组中的空单元格?

c++ - 如何在帕斯卡三角形中整合一行?

java - 将学生添加到数组中