2016-11-10 88 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