En fråga om referenser

PHP

3 svar · 378 visningar · startad av Troxy

Medlem sedan mars 20041 505 inlägg
Trådstart#1

Vad är skillnaden på följande två uttryck?

$b = &$a;
$b =& $a;
Medlem sedan feb. 2007278 inlägg
#2

Ingen. Men det första exemplet anses av de flesta nog vara lite fulare.

Medlem sedan mars 20041 505 inlägg
#3

Ah, detta förklarar en del förvirring! :birp
På tal om referenser. Säg att jag har en foreach-loop med referenser, såhär:

foreach($array as &$row) {
   if (...) {
      $row++;
   } else {
      unset($row); //Detta avsätter bara referensen, inte själva raden.
   }
}

Kan man ta bort raden ur arrayen med hjälp av referensen?

Medlem sedan feb. 2007278 inlägg
#4

Troxy skrev:

Kan man ta bort raden ur arrayen med hjälp av referensen?

Nej. Du kan bara sätta dess innehåll till NULL.

Referensräkning innebär att man måste ta bort varje referens till dess att ingen återstår. Då slutar det som pekats på att existera.

För att ta bort ett värde ur en array måste du alltså köra:

unset($arr[$key]);
265 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)