2016-11-10 89 views
3

我就用一些代码开始:最快的方式

$characterset = 'abcdefg'; 
$character = 'a'; 

说我有两个变量,charactersetcharacter,我想下一个character,所以我所做的:

$characterset = 'abcdefg'; 
$character = 'a'; 
$ncharacter = $characterset[ strpos($characterset, $character) + 1 ]; 

这工作,但我使用的是具有这样做上千次per/second的方法,以及使用XDebug + WebGrind结果是很多很多呼吁strpos,使得功能去很多比它慢应该走,我意识到在语言做math比做函数调用做数学题快了,我已经尝试使用:

$character = 'a'; 
$ncharacter = chr(ord($character) + 1); 

而且,将工作,但是这给了我太多字符如果我想确保它不是像:或其他类似+1这样的字符,它会是一堆有条件的参数,使它变慢,所以我正在寻找的是一种便宜的方式,以便character -> nextcharacter (determined from characterset)不会使用大量资源,WebGrind的基准是首选。

感谢:-)

+0

让我知道,如果我的解决方案工作。如果不是,那么它有什么问题。 – Learner

+0

@RyanVincent但是在字符集中给了我一堆不需要的字符,并且完全删除了字符集,我看到了与字符的关系:P – Jek

回答

1

使用此:

# The character set that we're using to iterate. 
$CharacterSet = 'abcdefg'; 
$chr_array = str_split($CharacterSet); 

foreach($chr_array as $Character){ 
//do whatever with character, everytime it will provide the next one when foreach loop continues 
} 

我希望它能帮助

+0

嘿,对于迟到的回复感到抱歉!我在同一时间为多个工作,所以我刚刚做另一个,我现在尝试你的方法:-) – Jek

+0

我不认为这是我想要做的呼叫的确切方式,替换一个' strpos'在'20000'时间循环中带有'split' +'foreach iteration',如果这有意义的话?我希望能够有一种非常干净而便宜的方法来选中阵列中当前字符旁边的字符。如果我有'a',并且'charset = abc',我会返回'b'。 – Jek