2012-07-03 220 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

相关问题