2013-12-11 60 views
-3

我試圖返回給定的字符串,每刪除一個字母。刪除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不及物動詞

當它應該返回: -

FrnkSiata

我怎樣才能糾正我的邏輯是什麼?

+2

知道你怎麼能知道它是正確的嗎?試試看看。 –

+1

你有沒有測試過,你知道嗎?它是否按預期工作?或不? –

+0

'if($ i%3!= 0){ $ output。= $ sentence [$ i]; }' –

回答

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

你這樣做是正確的,但返回一個數組而不是字符串;-)

因此改變return $output;return implode('', $output);,它應該返回一個字符串。

編輯:
因爲OP在他的問題改變了代碼我的回答沒有任何意義了...謝謝你的downvote任何方式,誰應該首先看問題的編輯歷史的人。

+0

最好只是將字符串追加在一起,而不是創建一個數組並在之後使它們崩潰。 (我沒有downvoted) – AeroX

+0

我知道,我只是修復他的代碼工作,而不是重寫它;-) – Sander

2

您的代碼不正確。

您可以檢查這只是運行

在你的代碼刪除每個第一和第二字母。

你也應該知道,0%3 == 0

在這種情況下,你可以把它改成

if($i == 0 || $i % 3 != 0){ 
相關問題