日期:2014-05-16  浏览次数:20381 次

PHP怎么判断字符串中包含重复相同的数字?
比如我有这么一组字符串:
a012
a023
a034
a010
a221
a133
a000
a111
a222

怎么判断出每个字符串是否有重复的字,而且要知道重复的次数。

如上的字符串,我想要的结果是:
a012,a023,a034均无重复数字,则结果返回1
a010,a221,a133均有2个数字为相同,则结果返回2
a000,a111,a222均有3个数字相同,则结果返回3
(注,判断的时候必须符合相应的重复次数,如a000,为3个数字相同,返回的必须是3,不能是2)
怎么做到?
------解决方案--------------------
$a = array(
  'a012',
  'a023',
  'a034',
  'a010',
  'a221',
  'a133',
  'a000',
  'a111',
  'a222',
);
foreach($a as $v) {
  $t = array_count_values(str_split($v));
  $res[$v] = max($t);
}
print_r($res); 
Array
(
    [a012] => 1
    [a023] => 1
    [a034] => 1
    [a010] => 2
    [a221] => 2
    [a133] => 2
    [a000] => 3
    [a111] => 3
    [a222] => 3
)

------解决方案--------------------
思路:
1.用str_split将字符串分割为数组
2.使用array_count_values返回每个字符出现的次数
3.max,取得重复最多的次数。


<?php
$arr = array('a012','a023','a034','a010','a221','a133','a000','a111','a222');
$arrcount = array();

foreach($arr as $val){
    $tmp = array_count_values(str_split($val));
    $arrcount[$val] = max($tmp);
}

print_r($arrcount);
?>