Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算字符数并获取Php或SQL中的出现百分比_Php_Mysql_Sql_Substring_Find Occurrences - Fatal编程技术网

计算字符数并获取Php或SQL中的出现百分比

计算字符数并获取Php或SQL中的出现百分比,php,mysql,sql,substring,find-occurrences,Php,Mysql,Sql,Substring,Find Occurrences,我有一个数据库,其中一个表有两列FirstName和LastName 我的名字是布鲁斯·韦恩,所以我想要的是一个输出,它将给我以下信息: 110% B 1 10% c 1 10% e 2 20% n 1 10% r 1 10% u 1 10% W 1 10% y 1 10% 每个字符在两个名称中出现了多少次,出现的百分比是多少。 我是新的php和mysql的一点帮助将是欢迎的。 到目前为止,我已经找到了这个 我不知道最好的方法是php还是sql。谢谢 你问: 我不知道最好的方法是php还是s

我有一个数据库,其中一个表有两列
FirstName
LastName
我的名字是
布鲁斯·韦恩
,所以我想要的是一个输出,它将给我以下信息:


110%
B 1 10%
c 1 10%
e 2 20%
n 1 10%
r 1 10%
u 1 10%
W 1 10%
y 1 10%

每个字符在两个名称中出现了多少次,出现的百分比是多少。 我是新的php和mysql的一点帮助将是欢迎的。 到目前为止,我已经找到了这个

我不知道最好的方法是php还是sql。谢谢

你问:

我不知道最好的方法是php还是sql

对于这个字符频率应用程序,应该使用MySQL查询获取字符串,并用php客户端语言计算它们的频率


您可以编写一些MySQL代码来在服务器端进行计数,但这将非常复杂。

首先将所有字母拆分为一个数组。数一数数组。在数组中循环并计算我们看到它们的频率。然后再循环一次以打印结果:

<?php
$text = 'This is a test';
$text = str_replace(' ', '', $text );
$arrLetters = str_split($text);
$countLetters = count($arrLetters);

$letters = [];

foreach($arrLetters as $letter){
    if(isset($letters[$letter])){
        $letters[$letter] += 1;
    } else {
        $letters[$letter] = 1;  
    }
}

foreach($letters as $letter => $total){
    echo $letter.":".$total.":".round(($total/$countLetters*100),2)."%<br />";
}

这可以帮助您了解字符串中的每个字符在该字符串中出现的次数。我不明白这与SQL有什么关系例如你的名字是草莓,你想知道你的名字是由什么组成的你要做的是先从数据库查询名字然后echo是用php对吗?现在。如果你想知道你名字中的每个字符,你要做的第一件事就是把字符串改成maybe和字符数组,然后从那里检查你有多少个
s
,有多少个
r
等等。。。这就是我的问题为什么我要查询数据库?我知道我的名字。不需要数据库。
<?php
$text = 'This is a test';
$text = str_replace(' ', '', $text );
$arrLetters = str_split($text);
$countLetters = count($arrLetters);

$letters = [];

foreach($arrLetters as $letter){
    if(isset($letters[$letter])){
        $letters[$letter] += 1;
    } else {
        $letters[$letter] = 1;  
    }
}

foreach($letters as $letter => $total){
    echo $letter.":".$total.":".round(($total/$countLetters*100),2)."%<br />";
}
T:1:9.09%
h:1:9.09%
i:2:18.18%
s:3:27.27%
a:1:9.09%
t:2:18.18%
e:1:9.09%