Er det ikke fantastisk? Blot ved at tilføje tegnet til variabelnavnet, den funktion kender nu til at arbejde på den faktiske variabel i stedet for en kopi, der vil blive kasseret ved slutningen af funktionen livscyklus. Naturligvis dette eksempel er rent, at - et eksempel, ikke for nyttigt, men, hvis du kører flere handlinger på et enkelt punkt (især et array) det er meget lettere, og renere, at passere elementet som selve elementet > En advarsel dog ikke forsøge at passere en reference til en funktion, der ikke forventer det, da det vil producere en "rådighedsvagt pasning af referencen» fejl: Problemet her (nørd alarm) er, at & faktisk betyder give mig den "adresse" af en variabel til at manipulere. Så når vi kalder det den rigtige måde (funktion func (& $ var) {}), funktionen ved det kommer til at få en adresse i hukommelsen, og kender til at manipulere objektet på det sted. Hvis vi forsøger at bruge tegnet, når du ringer en funktion, den forkerte vej (func (& $ myVar);), vi passerer den faktiske hukommelse adressen på den variabel til den funktion, der forventer et array, ikke en hukommelse adresse! Så mens en smule forvirrende, det er ganske fiks og ganske nyttig færdighed at have under din programmering bælte! Det er alt for nu! //dette er ikke allowedfunction someUnsuspectingFunction ($ array) //dette forventer en kopi {$ array [] = '5';} $ myArray = array ('1', '2', '3', '4'); someUnsuspectingFunction (& $ myArray); //Dette vil kaste et exceptionprint_r ($ myArray)
Web Design Største Mistakes