亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將數組加在一起并顯示每個字母使用了多少次

將數組加在一起并顯示每個字母使用了多少次

PHP
臨摹微笑 2023-09-08 10:33:39
幾個小時以來我一直在嘗試自己尋找解決方案。嘗試不同的方法。我需要將一列中的所有名稱加在一起,并找出每個字母出現的次數。這就是我陷入困境的地方,它只獲取列中的名字并顯示有關它的信息,但我需要將它們全部放在一起$text=mysqli_query($conn,"SELECT test from tabletest");//Fetch result $text=mysqli_fetch_assoc($text);$my_id=$text['test'];$text = str_replace(' ', '', $text );$arrLetters = str_split($text['test']);$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)."%\n";} 
查看完整描述

1 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

如果你想計算字符串數組中每個字母的頻率,你可以使用mb_str_split()array_count_values()

例如,我的數據庫中有兩行:


foo bar

this is a test of emoji ??

考慮以下代碼。在這里,我使用mb_str_split()然后使用另一個foreach循環將循環內的每個值拆分為單獨的字符,然后array_count_values($arrLetters)計算每個字符的頻率。


$stmt = $conn->prepare("SELECT test from tabletest");

$stmt->execute();

$result = $stmt->get_result();


foreach ($result as $row) {

? ? // split the string into characters

? ? $arrLetters = mb_str_split($row['test']);

? ? $countLetters = count($arrLetters);

? ? // count frequence of each character and immediately display results

? ? foreach (array_count_values($arrLetters) as $letter => $total) {

? ? ? ? echo $letter.": ".$total.": ".round(($total / $countLetters * 100), 2)."%\n";

? ? }

? ? echo '--------------'.PHP_EOL;

}

它將產生以下輸出:


f: 1: 14.29%

o: 2: 28.57%

?: 1: 14.29%

b: 1: 14.29%

a: 1: 14.29%

r: 1: 14.29%

--------------

t: 3: 12%

h: 1: 4%

i: 3: 12%

s: 3: 12%

?: 6: 24%

a: 1: 4%

e: 2: 8%

o: 2: 8%

f: 1: 4%

m: 1: 4%

j: 1: 4%

??: 1: 4%

--------------

如果您想將所有行的頻率作為一個結果,那么您可以將其全部分解為一個字符串,并且無需循環即可完成。


$stmt = $conn->prepare("SELECT test from tabletest");

$stmt->execute();

$result = $stmt->get_result();


// Implode it all into a single string

$text = implode(array_column($result->fetch_all(MYSQLI_NUM), 0));


// split the string into characters

$arrLetters = mb_str_split($text);

$countLetters = count($arrLetters);

// count frequence of each character and immediately display results

foreach (array_count_values($arrLetters) as $letter => $total) {

? ? echo $letter.": ".$total.": ".round(($total / $countLetters * 100), 2)."%\n";

}

這會給你這個輸出:


f: 2: 6.25%

o: 4: 12.5%

?: 7: 21.88%

b: 1: 3.13%

a: 2: 6.25%

r: 1: 3.13%

t: 3: 9.38%

h: 1: 3.13%

i: 3: 9.38%

s: 3: 9.38%

e: 2: 6.25%

m: 1: 3.13%

j: 1: 3.13%

??: 1: 3.13%


查看完整回答
反對 回復 2023-09-08
  • 1 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號