Bu PHP foreach
döngü sırasında dizisi kopyalama ve unsetting nasıl işleyeceğini bilgi benim eksikliği gelen, basit bir programlama soru. Bu gibi ben değiştirmek istiyorum bir şekilde biçimlendirilmiş bir dış kaynaktan bana gelen bir dizi var bu. Basit bir örnek olacaktır:
$myData = array('Key1' => array('value1', 'value2'));
Ama ne istiyorum gibi bir şey olurdu:
$myData = array([0] => array('MyKey' => array('Key1' => array('value1', 'value2'))));
Yani ilk $myData
almak ve ikinci $myData
gibi biçimlendirmek. Benim biçimlendirme algoritması tamamen iyiyim. Benim soru bu diziler biraz hantal alabilirsiniz beri belleği korumak için bir yol bulmakta yatıyor. Yani, benim foreach
döngü sırasında ben o zaman ben orijinal diziden ile çalışıyorum değeri unset, yeni biçime geçerli dizi değer (ler) kopyalayın. Örneğin:
$formattedData = array();
foreach ($myData as $key => $val) {
// do some formatting here, copy to $reformattedVal
$formattedData[] = $reformattedVal;
unset($myData[$key]);
}
Burada unset()
iyi bir fikir çağrısı mı? Ben verileri kopyalanan ve artık özgün değer gerekir beri, yani hafızayı korumak mı? Ben herhangi bir sonraki kodda başvuru yok çünkü ya, PHP otomatik çöp veri toplamak mı?
Kod iyi çalışır, ve şimdiye kadar benim gerçekleştirmede performans farklılıkları test etmek için boyutu çok önemsiz olmuştur. Daha sonra bazı garip hatalar veya CPU isabetleri için kendimi kuruyorum, ben sadece bilmiyorum.
Thanks for any insights.
-sR