如何在PHP中查找给定数字的字符串字母

如何在PHP中查找给定数字的字符串字母,php,for-loop,find-occurrences,Php,For Loop,Find Occurrences,我有绳子 $str='street' 我想写一个函数 输出($str,$n) 此处,$n是给定字符串中出现次数的计数。 我不想使用任何PHP内置函数,比如首先将其转换为数组或substr\u count或任何其他函数,如果可能的话,我只想使用pure for循环 考虑到n美元为2,预期产出为:- t->2 e->2 $input = 'street'; $n = 2; function outputs($input, $n) { $input = str_replace(' ', ''

我有绳子
$str='street'
我想写一个函数
输出($str,$n)

此处,
$n
是给定字符串中出现次数的计数。 我不想使用任何PHP内置函数,比如首先将其转换为数组或
substr\u count
或任何其他函数,如果可能的话,我只想使用pure for循环

考虑到n美元为2,预期产出为:-

t->2

e->2

$input = 'street';
$n = 2;

function outputs($input, $n)
{
    $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)
    {
        if ($number == $n) {
            echo $char . ' -> ' . $number;
            echo "\n";
        }
    }
}

outputs($input, $n);
所以在这里,我已经尝试了上面的代码,它工作得非常好,但是在这里我使用str_split函数来实现这一点。我想避免它的使用,只在可能的情况下才需要使用循环


我不擅长设置问题的格式,因此请恕我直言。

您可以使用for循环:

<?php

$input = 'street';
$n = 2;

function outputs($input, $n)
{
    $input = str_replace(' ', '', $input);

    $outputs = [];

    for($i = 0; $i < strlen($input); $i++)
    {
        if(!isset($outputs[$input[$i]])){
            $outputs[$input[$i]] = 1;
        } else {
            $outputs[$input[$i]] += 1;
        }
    }

    foreach ($outputs as $char => $number)
    {
        if ($number == $n) {
            echo $char . ' -> ' . $number;
            echo "\n";
        }
    }
}

outputs($input, $n);

您可以改为使用for循环:

<?php

$input = 'street';
$n = 2;

function outputs($input, $n)
{
    $input = str_replace(' ', '', $input);

    $outputs = [];

    for($i = 0; $i < strlen($input); $i++)
    {
        if(!isset($outputs[$input[$i]])){
            $outputs[$input[$i]] = 1;
        } else {
            $outputs[$input[$i]] += 1;
        }
    }

    foreach ($outputs as $char => $number)
    {
        if ($number == $n) {
            echo $char . ' -> ' . $number;
            echo "\n";
        }
    }
}

outputs($input, $n);

删除
str_split
str_replace()
函数可以通过使用字符串可以作为数组访问这一事实来完成,因此在字符串上循环,并根据每个字符在字符串中的位置选择每个字符

function outputs($input, $n)
{
    $outputs = [];
    for ( $i = 0; $i < strlen($input); $i++ )
    {
        $char = $input[$i];
        if ( $char != ' ' ) {
            if(!isset($outputs[$char])){
                $outputs[$char] = 1;
            } else {
                $outputs[$char] += 1;
            }
        }
    }

    foreach ($outputs as $char => $number)
    {
        if ($number == $n) {
            echo $char . ' -> ' . $number;
            echo "\n";
        }
    }
}

删除
str_split
str_replace()
函数可以通过使用字符串可以作为数组访问这一事实来完成,因此在字符串上循环,并根据每个字符在字符串中的位置选择每个字符

function outputs($input, $n)
{
    $outputs = [];
    for ( $i = 0; $i < strlen($input); $i++ )
    {
        $char = $input[$i];
        if ( $char != ' ' ) {
            if(!isset($outputs[$char])){
                $outputs[$char] = 1;
            } else {
                $outputs[$char] += 1;
            }
        }
    }

    foreach ($outputs as $char => $number)
    {
        if ($number == $n) {
            echo $char . ' -> ' . $number;
            echo "\n";
        }
    }
}

那么,到底是什么阻止了你这么做?请尝试一下,然后让我们知道您具体遇到了什么问题。此外,请澄清您是否希望字母具有准确的输入计数,或至少具有输入计数。还缺少显示不同输入的预期结果。例如,
输出('stress',2)
如何?这会显示
s
还是不显示?@PatrickQ请查找更新的代码,我必须在其中使用str_split php函数,我希望避免使用str_split php函数,是的,我希望字母重复与输入计数完全相同。@Kendrick您是否排除使用甚至
strlen()
?那么
isset()
呢?这些也是“内置”功能,但可能对您的任务很重要。那么,到底是什么阻止您尝试这样做呢?请尝试一下,然后让我们知道您具体遇到了什么问题。此外,请澄清您是否希望字母具有准确的输入计数,或至少具有输入计数。还缺少显示不同输入的预期结果。例如,
输出('stress',2)
如何?这会显示
s
还是不显示?@PatrickQ请查找更新的代码,我必须在其中使用str_split php函数,我希望避免使用str_split php函数,是的,我希望字母重复与输入计数完全相同。@Kendrick您是否排除使用甚至
strlen()
?那么
isset()
呢?这些也是“内置”功能,但对您的任务可能很重要。