preg_replace () diziler denir () önceden ksort ihtiyacı var?

4 Cevap php

4 Cevap

docs ki:

anahtarlar dizide görünen sırayla işlenir

Yani olur Nedeni basit foreach-tipi yineleme indeks erişimi kullanılır ve olmasıdır.

Ne yazık ki, PHP tüm diziler ilişkilendirilebilir diziler vardır.

$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';

Is stored as 2 -> bear, 1 -> black, 0 -> slow

Bunun yerine tipik bloklarının

Yavaş | siyah | bear

Bellekte değerlerin saklandığı yerde indekslerin sadece, endeksler, onlar dikte etmiyoruz, next () ve akım () i için başlangıç ​​bellek adresinden dizinin üzerinde yineleme, diziler geçtiğinde preg_replace kullandığı hayal olduğu gibi fonksiyonları verim için son.

Php sürü şeyler olduğu gibi, bu dizi yineleme hız için inşa edilmiştir, başka bir şey size biraz daha fazla iş yapmak için bir çift daha fazla satır eklemek zorunda yüzden geliştirici, kadar haklı olduğunu.

preg_replace() bu gibi kod yürütme olsaydın gibi davranır

reset($patterns);
reset($replacements);

$pattern = current($patterns);
$replacement = current($replacements);

do {
  // Replace the pattern, if found.
  $pattern = next($patterns);
  $replacement = next($replacements);
} while ($pattern !== FALSE);

Ben işlevini çağırmak olmadan çalışmış olurdu tercih ederdik ksort().