2012-07-03 222 views
0

我正在嘗試在面向對象的PHP中執行此操作,但在使用遞歸時遇到問題(如果第一個字符串以「(」開頭,我想檢查。下面的字符),其他情況下工作,下面是代碼:檢查兩個字符串是否以相同的字符開頭

public static function different_first($item,$item1) { 
    if (substr($item, 0, 1) != substr($item1, 0, 1)) { 
     return TRUE; 
    } else if (substr($item,0,1)=="(") { 
     Object::different_first(substr($item, 1), $item1); 
    } else { 
     return FALSE; 
    } 
} 

回答

1

缺少返回馬克提到我做了一些改進你的代碼。這會跑得快很多。

public static function different_first($item,$item1) { 
    if ($item{0} == $item1{0}){ 
     return false; 
    }elseif ($item{0}=="(") { 
     return Object::different_first($item{1}, $item1); 
    } else { 
     return true; 
    } 
} 
+0

謝謝:)子字符串函數是如此之慢? – user1301428

+0

是的。我沒有確切的基準,但這肯定會更快,而且更清潔。 – shxfee

+1

我已經編輯了你的代碼,因爲true和false在交換;) – user1301428

4

你缺少一個回報:

return Object::different_first(substr($item, 1), $item1); 
+0

你的例子爲我返回'TRUE' ..期望的結果是什麼? – shxfee

+0

@Shafee的權利,我不知道我在看什麼,它的工作原理:D – user1301428

相關問題