Verimliliği gerçekten arıyorsanız, bir işaretçiyi - yani dizini - dizginizle tutmalısınız. Birçok dize işlevi, çalışmaya başlamak için bir ofseti kabul eder (strpos()
'un üçüncü parametresi gibi). Normalde bu işlevselliği sarmak için bir nesne yazmanızı öneririm, ancak bunu çok fazla kullanmayı düşünüyorsanız, bu durum performans darboğazına neden olabilir.
while ($whatever) {
$pos = strpos($string, $myToken, $startIndex);
# do something using $pos
$startIndex = $pos;
}
İsterseniz, bu dize işlemlerini yapar kendi sarmalayıcı sınıf yazabilir ve bir hız etkisi olup olmadığını görmek:
class _String {
private $string;
private $startIndex;
private $length;
public function __construct($string) {
$this->string = $string;
$this->startIndex = 0;
$this->length = strlen($string);
}
public function substr($from, $length = NULL) {
$this->startIndex = $from;
if ($length !== NULL) {
$this->endIndex = $from + $length;
}
}
# other functions you might use
# ...
}
İşte bir ben (OO olmadan) ne anlama geldiğini örneğidir
Ben atama katil değil substr olacağını düşünürdüm. – CaffGeek