Ben şu anda bir PHP uygulama optimize ve bir fonksiyon 10-20k kez etrafında çağrıldığını, bu yüzden ben orada optimizasyonu başlamak istiyorum düşünmüştü bulundu ediyorum:
function keysToLower($obj)
{
if(!is_object($obj) && !is_array($obj)) return $obj;
foreach($obj as $key=>$element)
{
$element=keysToLower($element);
if(is_object($obj))
{
$obj->{strtolower($key)}=$element;
if(!ctype_lower($key)) unset($obj->{$key});
}
else if(is_array($obj) && ctype_upper($key))
{
$obj[strtolower($key)]=$element;
unset($obj[$key]);
}
}
return $obj;
}
Most of the time is spent in recursive calls (which are quite slow in PHP), but I don't see any way to convert it to a loop. What would you do?
Bu sürüm benim veri herhangi yok çünkü ilişkisel diziler için hesap, ancak orijinal versiyonu göre yaklaşık 10 kat daha hızlı değildir. Çalışmalarının çoğu bamya tarafından yapıldı, büyük hızlanma referansları kullanarak ve yeni bir nesne oluşturmak yerine eski anahtarları unsetting geliyor.
function &keysToLower(&$obj)
{
if(is_object($obj))
{
$newobj = (object) array();
foreach ($obj as $key => &$val)
$newobj->{strtolower($key)} = keysToLower($val);
$obj=$newobj;
}
else if(is_array($obj))
foreach($obj as &$value)
keysToLower($value);
return $obj;
}