SORU
7 EKİM 2009, ÇARŞAMBA


Bir işlev başka bir PHP dizinin bir kopyasını var mı?

Bir işlev başka bir PHP dizinin bir kopyasını var mı?

Birkaç kez PHP dizileri kopyalamak yanıldım. Bir dizi küresel dışarıda bir nesne içinde tanımlanan kopyalamak istiyorum.

CEVAP
7 EKİM 2009, ÇARŞAMBA


PHP diziler nesnelerine başvuru tarafından tayin ederken kopya tarafından atanır. Bunun anlamı şudur:

$a = array();
$b = $a;
$b['foo'] = 42;
var_dump($a);

Verim:

array(0) {
}

Oysa:

$a = new StdClass();
$b = $a;
$b->foo = 42;
var_dump($a);

Verim:

object(stdClass)#1 (1) {
  ["foo"]=>
  int(42)
}

Tam bir dizi gibi davranan bir nesne olan ArrayObject gibi karışıklıklar ile karışık olabilir. Bir nesne ancak, başvuru semantiği vardır.

Edit: @AndrewLarsson açıklamalarda bir puanın altına yükseltir. PHP özel bir özelliği vardır "başvurular". C/C gibi diller , ama tam olarak değil aynı işaretçiler biraz benzer. Eğer dizinizi başvurular içeriyorsa, bu dizi kendini kopyalama tarafından kabul edilirken, başvurular hala asıl hedef olarak çözümlenir. Bu tabii ki genellikle istenmeyen bir davranış değil, ama kayda değer olduğunu düşündüm.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • laptopmag

    laptopmag

    25 Ocak 2008
  • TheDailyTechDose

    TheDailyTech

    15 EKİM 2012
  • THELIFEOFPRICE

    THELIFEOFPRI

    16 Mart 2011