从指针中获取字符串下一个元素的最快方法


Fastest way to get the next element in a string from a needle

我将以一些代码开始:

$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是首选。

谢谢:-)

使用

# 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
}

希望对大家有所帮助