webForumDet fria alternativet

En fråga om referenser

PHP

3 svar · 372 visningar · startad av Troxy

Medlem sedan mars 20041 505 inlägg
Frågan#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]);
267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)