获得字符串中最多的字母PHP

时间:2018-09-30 02:44:35

标签: php

我需要可以从字符串中获取最多字母的PHP函数

$string = "111010111010001101";
$execute = SomeFunction($string);
echo $execute;

输出将是这样

1

是否有这样的php函数?谢谢

3 个答案:

答案 0 :(得分:2)

你在这里

$string = "111010111010001101";

//$string = "abaacabdeeeee";

$array_count = array_count_values(str_split($string));
$res = array_keys($array_count, max($array_count));

print_r($res);

要使其具有功能,只需执行以下操作:

function SomeFunction($string){
   $array_count = array_count_values(str_split($string));
   return array_keys($array_count, max($array_count));
}

print_r(SomeFunction('111010111010001101'));

输出

 1 //or e in the commented one I tested

Sandbox

工作原理

  • 将字符串拆分为一个字符数组str_split
  • 计算字符array_count_values的出现次数
  • 获取具有最大出现次数array_keysmax的密钥

注意事项

如果两个值相等,则它们都将在结果中返回。例如

$string = 'ababababcd';

输出

Array
(
   [0] => a
   [1] => b
)

您从未提到过在这种情况下想要发生的事情(平局)。对于您的特定情况,这甚至可能不是问题。但是为了完整起见,我不得不提到它。如果您不希望将返回值作为数组,则可以执行以下操作(返回false或第一个元素):

function SomeFunction($string){
   $array_count = array_count_values(str_split($string));
   $res = array_keys($array_count, max($array_count));
   if(empty($res)) return false;
   return array_shift($res);
}

干杯!

答案 1 :(得分:1)

无效但简单

max(str_split($string));

答案 2 :(得分:1)

是的,只要您的字符集不是字符串中包含多字节字符的多字节字符集。请参见手册页上的count_chars