我试图在删除每三个字母的情况下返回给定的字符串。
这是我迄今为止的代码:-
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在他的问题中更改了代码,我的回答不再有意义了。。。无论如何,感谢投了反对票,投反对票的人应该先看看这个问题的编辑历史。