在php中每隔3个字符删除一次


Remove every 3rd char in php

我试图在删除每三个字母的情况下返回给定的字符串。

这是我迄今为止的代码:-

function removeThirdLetter($sentence){
    $output = "";
    for ($i = 0;$i < strlen($sentence);$i++){
        if($i % 3 != 0){
            $output .= $sentence[$i];
        }
    }
    return $output;
}

当我试着这样使用它时:-

$str = "Frank Sinatra";
echo removeThirdLetter($str);

它返回:-

rak-intr

何时返回:-

FrnkSiata

我该如何纠正我的逻辑?

您的代码不正确。

你可以检查一下,只需运行

在代码中,您可以删除第一个和第二个字母。

你也应该知道0%3==0

在这种情况下,您可以将其更改为

if($i == 0 || $i % 3 != 0){

初始化$output变量后,省略了分号
另外,考虑到您正在附加到字符串,最好使用.=而不是$output[] =,否则它会尝试将$output作为数组返回
此外,$i % 3 == 0只是在它是第三个字符的地方(从第一个字符开始)添加,而不是在它不是输出文本建议您想要的第三个角色的地方。

以下是根据您的示例工作的:

<?php
function removeThirdLetter($sentence){
    $output = "";
    for ($i = 0; $i < strlen($sentence); $i++){
        if($i % 3 != 2){
            $output .= $sentence[$i];
        }
    }
    return $output;
}
$str = "Frank Sinatra";
echo removeThirdLetter($str); // should return "FrnkSiata"
?>

您做得很好,但返回了一个数组而不是字符串;-)

因此,将return $output;更改为return implode('', $output);,它应该返回一个字符串。

编辑:
因为OP在他的问题中更改了代码,我的回答不再有意义了。。。无论如何,感谢投了反对票,投反对票的人应该先看看这个问题的编辑历史。