unsetting php referans

3 Cevap php

Yani, bu işlevi vardır, ve o bana o dizi / referans sonucunu çıkarmak unset için bir çağrı yapmak istiyorum geçirilen dizinin belirli bir noktaya bir başvuru verir, ancak unset çağırarak sadece başvuru kaldırır Orijinal dizideki değil verileri. Herhangi bir düşünce?

3 Cevap

null referans (ve herhangi bir diğer referans) bağlı olduğu verileri yok edecek başvurusunu ayarlanması.

Bu konuda daha fazla bilgi için kılavuzda Unsetting References bakın. Temelde (yorumlarından alınan) aşağıdaki yapmak istiyorum:

$a = 1;
$b =& $a;
$c =& $b;  //$a, $b, $c reference the same content '1'

$b = null; //All variables $a, $b or $c are unset

Senin durumunda, böyle bir şey bakacağız:

$a =& getArrayReference($whatever);
$a = null;

EDIT

Herhangi bir yanlış temizlemek için, buraya ne zaman tanımsız dizi başvuruları ne olsun:

$arr = array('x','y','z');

$x =& $arr[1];
unset($x);
print_r($arr);
//gives Array ( [0] => x [1] => y [2] => z )

$x =& $arr[1];
$x = null;
print_r($arr);
//gives Array ( [0] => x [1] => [2] => z ) 

Ikinci dizi indeksi unset() ile ilk örnekte silinen içeriğin, ancak referans ayarı ikinci örnek null bunu gerçekleştirir yok nasıl fark.

Not: Eğer ben yapmak veya olmasın gibi, o zaman yerine değeri dizinin anahtarı başvurmak için bir yol bulmak gerekir üzerinde biraz belirsiz değilim yanı sıra, hangi dizi indeksi unset gerekiyorsa, senin işlevin dönüş değerini değiştirerek olasılıkla.

Bu başvuru unsetting unset değişken başvurulan olmadığı beklenen davranıştır. Bir çözüm anahtarı yerine değeri ve orijinal değerini unset için kullanarak döndürmektir.