【问题标题】:Count number of character occurrences in a string in PHP without use available function在不使用可用函数的情况下计算 PHP 中字符串中出现的字符数
【发布时间】:2017-05-22 08:51:08
【问题描述】:

对不起,如果这个问题已经存在。 我有一个问题你能帮我吗。 仅使用strlen 函数和数组。你能用 PHP 计算字符串中出现的字符数吗(字符不重复)。类似于在 php 中创建一个新的 array_count_values 函数。 例如:

$input = 'lorem lis pum';
Output: 
l appeared 2 times;
o appeared 1 times;
r appeared 1 times;
...

这是我使用可用函数 array_count_values 时的代码,它有效。

$a = str_split($str, 1);
foreach (array_count_values($a) as $key => $value) {
    if ($key === ' ') {
        $key = '_';
    }
    echo $key.'appeared '.$value.' times<br>';
}

感谢阅读。

【问题讨论】:

  • 我很想知道您为什么需要创建一个已经存在的范例?你想实现另一种方法吗?为此,您需要为此创建一个新方法吗?
  • @hassan 我想了解更多相关信息。也许我将来会做一个新的方法。 :))

标签: php arrays string


【解决方案1】:

这是一种方法。我相信还有更简洁的方法可以做到这一点。

$input = 'lorem lis pum';

for( $i = 0, $ilen = strlen( $input ), $result = array(); $i < $ilen; $i++ ) {
  $chr = $input[ $i ];
  // substituting the space with an underscore is not actually necessary
  if( $chr === ' ' ) {
    $chr = '_';
  }
  $result[ $chr ] = isset( $result[ $chr ] ) ? $result[ $chr ] + 1 : 1;
}

var_dump( $result );

你可以view this example online

【讨论】:

    【解决方案2】:

    你可以试试这个,希望对你有帮助:)

    <?php
    $input = 'lorem lis pum';
    
    function outputs($input)
    {
        $input = str_replace(' ', '', $input);
    
        $characters = str_split($input);
    
        $outputs = [];
    
        foreach ($characters as $char)
        {
            if(!isset($outputs[$char])){
                $outputs[$char] = 1;
            } else {
                $outputs[$char] += 1;
            }
        }
    
        foreach ($outputs as $char => $number)
        {
            echo $char . ' appeared ' . $number . ' times;<br />';
        }
    }
    
    outputs($input);
    ?>
    

    或简单版本:

    <?php
    $input = 'lorem lis pum';
    
    function outputs($input)
    {
        //suggest remove all spaces first
        $input = str_replace(' ', '', $input);
    
        $chars = str_split($input);
    
        foreach (array_count_values($chars) as $key => $value)
        {
            echo $key. ' appeared '.$value.' times<br>';
        }
    }
    
    outputs($input);
    ?>
    

    【讨论】:

      【解决方案3】:

      尝试使用函数count_chars

      foreach (count_chars($str, 1) as $key => $value) {
          echo chr($key).' appeared '.$value.' times<br>';
      }
      

      【讨论】:

      • 感谢@Timur,但我不想使用可用功能。
      猜你喜欢
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 2012-12-18
      • 1970-01-01
      • 2015-07-18
      • 2013-06-20
      相关资源
      最近更新 更多