在php中以字符串存储每个字母的计数

时间:2016-07-03 03:32:52

标签: php arrays

我是PHP开发的新手。我希望能够将一个单词的每个字符数存储在一个数组中。

所以如果单词是“test”。

我想要像

这样的东西
arr[t] = 2
arr[e] = 1
arr[s] = 1

就ASCII而言,我实际上想要这样的东西:

arr[116] = 2
arr[101] = 1
arr[115] = 1

以下是我的尝试:

 <?php
    $content = file_get_contents($argv[1]);
    $arr = explode(" ", $content);
    $countArr = array();
    for($x = 0; $x < strlen($arr[0]); $x++)
    {
        $countArr[$arr[0][$x]]++;    // taking first word and trying to store count of each letter
    }
    for($x = 0; $x < 256; $x++)
    {
        echo $countArr[$x];    // trying to print the count values  
    }
    ?>

它似乎不起作用。在c ++中,我曾经做过类似的事情并且过去常常工作。我在这里错过了一些东西。请帮忙。

2 个答案:

答案 0 :(得分:1)

您需要使用str_splitarray_count_valuesord来获取所有需求输出。只需array_count_values为您提供第一个需求输出,如果您想将ascii值用作数组键,则使用ord

$str = "test";
$arr = str_split($str);
$count_val = array_count_values($arr);

$res_ascii = array();
foreach($count_val as $k => $v){
    $res_ascii[ord($k)] = $v;
}

print_r($count_val); // Array ( [t] => 2 [e] => 1 [s] => 1 )
print_r($res_ascii); // Array ( [116] => 2 [101] => 1 [115] => 1 )

答案 1 :(得分:0)

我能够编写答案: P.S:这可能不是万无一失的。

<?php
// Program to find the word in a sentence with maximum specific character count
// Example: "O Romeo, Romeo, wherefore art thou Romeo?”
// Solution: wherefore 
// Explanation: Because "e" came three times
$content = file_get_contents($argv[1]); // Reading content of file
$max = 0;
$arr = explode(" ", $content); // entire array of strings with file contents
for($x =0; $x<count($arr); $x++) // looping through entire array 
{
$array[$x] = str_split($arr[$x]); // converting each of the string into array
}
for($x = 0; $x < count($arr); $x++)
{
    $count = array_count_values($array[$x]);
    $curr_max = max($count);
    if($curr_max > $max)
    {
        $max = $curr_max;
        $word = $arr[$x];
    }
}
echo $word;
?>