2013-03-13 34 views
5

我想查找字符串包含多少个唯一字符。实例:PHP:查找字符串中不同字母的数量

"66615888" contains 4 digits (6 1 5 8). 
"12333333345" contains 5 digits (1 2 3 4 5). 
+0

你关心数字(字符)返回的顺序吗? – Floris 2013-03-13 16:47:39

+0

询问问题是询问“多少”唯一字符,而不是它们的列表。 – merlin2011 2013-03-13 17:01:55

+0

@弗洛里斯我没有,只需要“多少”。 – jlee 2013-03-13 17:06:42

回答

11
echo count(array_unique(str_split('66615888'))); 

Demo

文档:

  1. count() - 计数以阵列
  2. array_unique()元件的数量 - 查找阵列的独特元素
  3. str_split() - Sp点燃一个字符串到一个数组
+0

它的工作原理,谢谢〜 – jlee 2013-03-13 16:49:42

+0

+1但是,让我问:你知道哪个性能更好:你的解决方案还是merlin2011的/ NikiC的? – insertusernamehere 2013-03-13 16:54:36

+0

@insertusername我不知道。哪一个更好? – jlee 2013-03-13 17:01:08

7

count_chars给你地图的char => frequency一个,您可以用array_sum总结:

$count = array_sum(count_chars($str)); 

或者您可以使用3模式count_chars,这将给你一个包含所有唯一字符的字符串:

$count = strlen(count_chars($str, 3)); 
+0

这种方法也可以。谢谢。 – jlee 2013-03-13 16:55:44

+0

我比“接受”更喜欢这个答案。创建一个包含所有元素的数组需要很多开销 - 'count_chars(,3)'是获取所有独特字符的最直接方式,而'strlen'就是count - 这就是所要求的。它得到我的投票。 – Floris 2013-03-13 17:16:17

1

PHP具有计算字符的功能。

$data = "foobar"; 
$uniqued = count_chars($data, 3); 
$count = strlen($uniqued); 

请参阅文档here

0

您可以使用下面的脚本:

<?php 
    $str1='66615888'; 
    $str2='12333333345'; 
    echo 'The number of unique characters in "'.$str1.'" is: '.strlen(count_chars($str1,3)).' ('.count_chars($str1,3).')'.'<br><br>'; 
    echo 'The number of unique characters in "'.$str2.'" is: '.strlen(count_chars($str2,3)).' ('.count_chars($str2,3).')'.'<br><br>'; 
?> 

输出:

的独特字符 “66615888” 的号码是:4(1568)

的独特的字符数“ 12333333345“是:5(12345)


这里PHP字符串函数count_chars()在模式3产生一个具有所有唯一字符的数组。

PHP字符串函数strlen()产生了唯一字符的总数。

相关问题