我在数组中有一系列字母:
$myRange = range("a","c");
我想计算此范围内字母出现在字符串中的次数:
$str = "abcdefg";
有没有办法让我substr_count()
来实现这个目标?
例如:substr_count($str, $myRange);
我可以使用foreach循环,但这似乎有点矫枉过正,并不那么优雅。循环是唯一的方法吗?
答案 0 :(得分:0)
你也可以做一个正则表达式:
preg_match_all("/[a-c]/", "aaabbbcccddasdfasdf", $match);
$array = array();
foreach($match[0] as $val)
{
if(!isset($array[$val]))
{
$array[$val] = 1;
}
else
{
$array[$val] += 1;
}
}
print_r($array);
它会给你一个键值数组
Array
(
[a] => 5
[b] => 3
[c] => 3
)
答案 1 :(得分:0)
如果您只使用单个字符,则可以使用:
count( array_intersect( str_split( $str ), $myRange ) );
但是foreach的速度提高了3倍..