count数组以特定字符开头

时间:2016-12-24 13:07:29

标签: php arrays

例如,

echo count($_GET);

打印所有值的数量,如何计算值以“cat”开头。

价值就像

array(2) {
  ["cat1"]=>
  string(1) "a"
  ["cat2"]=>
  string(1) "b"
  ["dog1"]=>
  string(1) "c"
}

5 个答案:

答案 0 :(得分:1)

使用preg grep

$list = array ( 'cat1', 'cat2', 'dog' );
$res = preg_grep ('/^cat/i', $list);
print_r(count($res));

答案 1 :(得分:1)

<?php
$list = array ( 'cat1', 'cat2', 'dog' );
$numCat = 0;
array_walk($list, function($v) use(&$numCat) {substr($v, 0, 3) == 'cat' ? $numCat += 1 :  '';});
echo $numCat;

答案 2 :(得分:0)

使用array_keys方法获取数组$ _GET的所有键,匹配preg_rep所需的键,检查以所需字符串开头的字符串,并计算匹配的数量。

count(preg_rep('/^cat/',array_keys($_GET)));

答案 3 :(得分:0)

您可以使用循环检查,使用substr获取字符串键值的前三个字符,然后将其与单词&#34; cat&#34;进行比较。使用strcmp

$cats = 0;
foreach ($_GET as $key => $val){
     if(strcmp(substr($key,0,3),'cat')==0){
          $cats++;
     }
}
echo $cats;

答案 4 :(得分:0)

这是另一种方式,

echo count(array_filter($_GET, function($key) {
                      return strpos($key, 'cat') === 0;
},ARRAY_FILTER_USE_KEY));

我希望这会有所帮助。