删除php中的每个第3个字符

时间:2013-12-11 14:06:44

标签: 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

我如何纠正我的逻辑?

3 个答案:

答案 0 :(得分:2)

您的代码不正确。

你可以检查一下它只是运行它

在您的代码中删除每个第一个和第二个字母。

另外你应该知道0%3 == 0

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

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

答案 1 :(得分:0)

你做得对,但是返回数组而不是字符串; - )

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

编辑:
因为OP改变了他的问题中的代码,我的答案再也没有意义了......感谢任何方式的downvote,所做的人应该首先看一下问题的编辑历史。

答案 2 :(得分:0)

初始化$output变量后,您遗漏了分号 另外,当您附加到字符串时,最好使用.=而不是$output[] =,否则会尝试将$output作为数组返回。
此外,$i % 3 == 0仅附加在第3个字符的位置(从第一个字符开始),而不是输出文本建议您想要的第3个字符。

以下按照您的示例工作:

<?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"
?>