Php 如何从单词数组中获取特定字母的计数

Php 如何从单词数组中获取特定字母的计数,php,arrays,string,count,Php,Arrays,String,Count,我想获得以特定字母“/”开头的一些文本的计数 如下所示。我想要该数组中所有“A/”发生的计数 <?php $arr_vals = array("A/V","A/B","B/A","D/D","A/v","A/A"); $count_A = count($arr_vals,"A/*"); ?> 简单易行的解决方案。以下是您的解决方案:- $input = preg_quote('A/', '~'); // don't forget to quote input string!

我想获得以特定字母“/”开头的一些文本的计数 如下所示。我想要该数组中所有“A/”发生的计数

<?php
$arr_vals = array("A/V","A/B","B/A","D/D","A/v","A/A");


$count_A = count($arr_vals,"A/*");


?>

简单易行的解决方案。以下是您的解决方案:-

$input = preg_quote('A/', '~'); // don't forget to quote input string!
$arr_vals = array("A/V","A/B","B/A","D/D","A/v","A/A");
$result = preg_grep('~' . $input . '~', $arr_vals);
echo count($result); die;
可以使用回调函数获取整个数组并计算结果。我们可以使用来定义您的模式。结合这两件事,我们有您的解决方案:

$arr_vals = array("A/V","A/B","B/A","D/D","A/v","A/A");


function match($carry, $item)  {
  return $carry + preg_match('/A\/./', $item);
}

var_dump(array_reduce($arr_vals, 'match', 0));  // Returns 4
使用也可以使用shell通配符,例如
*

function count_pattern(array $input, string $pattern): int {
    $count = 0;
    foreach ($input as $string) {
        $count += fnmatch($pattern, $string);
    }
    return $count;
}
用法

$arr_vals = array("A/V","A/B","B/A","D/D","A/v","A/A");
echo count_pattern($arr_vals, "A/*"); // 4

注意:为了使用标量类型提示和返回,您需要PHP7。如果您还没有使用PHP7,您可以忽略它们。

是的,正确答案是

$input = preg_quote('A/', '~'); // don't forget to quote input string!
$arr_vals = array("A/V","A/B","B/A","D/D","A/v","A/A");
$result = preg_grep('~' . $input . '~', $arr_vals);
echo count($result); die;

您需要使用正则表达式来匹配所需的模式。或者,您可以使用斜杠作为分割分隔符使用
explode()
,并检查结果数组。@JohnEllmore不需要explode。。看我的answer@nfnneil不,不,没有。对不起,我在辩论之后马上投了赞成票。