*   >> läser Utbildning artiklar >> science >> programming

Php Reference

Grunderna i PHP - Del 14 Inledning Detta är en del 14 av min serie, Grunderna i PHP. I PHP referenser är ett sätt att få tillgång till samma variabel innehåll (värde) med olika namn. Värden (variabelt innehåll) hålls i minnesplatser. En variabel identifierar en minnesplats. En referens används i allmänhet när man är mer intresserad av vad som finns i en minnesplats och inte variabeln. PHP referens skiljer sig från referens i andra datorspråk.

När du läser den här artikeln, undvika att göra jämförelser med vad du läser eller vad som finns på andra datorspråk, som C, eftersom det kan förvirra dig. Jag har gjort mitt bästa för att sätta detta i ett logiskt progressivt sätt, så ta saker som jag ger dig. Obs: Om du inte kan se koden, eller om du tror att något saknas (bruten länk, bild frånvarande), bara att kontakta mig på [email protected]. Det vill säga, kontakta mig för minsta problem du har om vad du läser. Minnesplats En minnesplats är ett område i ett datorminne som håller värdet på en variabel.

En teknik för att arbeta med en minnesplats Tänk på följande uttalande: $ var = 5; Värdet 5 är i en minnesplats. Du kan använda samma minnesplats för att öka värdet av 5-8, genom att tillsätta 3. Du skulle göra detta: $ var = $ var + 3; Vad som händer är detta: Datorn vet att $ var identifierar minnesplats som har nummer 5. För rätt operanden av ovanstående uttalande, går datorn till minnesplatsen som identifierats av $ var och lägger 3 till vad som finns där. Vad är det 5. När 3 tillsätts, har du 8 i minnesplatsen som identifierats av $ var.

Platsen har 8, som tilldelades till variabeln $ var, fortfarande tilldelas samma variabel. Längs linjen, ingenting förändrats uppdraget. Samma princip tillämpas på strängar, som i följande exempel: $ var = "en"; $ var = $ var. " två"; Lägg märke till här att i det andra meddelandet, finns det en punkt mellan $ var och "två". Detta kallas punktoperatorn; den förenar två strängar tillsammans. I det första meddelandet, har $ var värdet "ett". Variabeln identifierar $ var platsen med "ett".

I det andra meddelandet, för rätt operanden "två" läggs (förenade) i den här platsen, för att ge strängen "ett två". Identifieringen av denna plats har inte förändrats. Så $ var identifierar fortfarande på plats. Platsen är fortfarande tilldelas $ var. Så, för att ändra innehållet i en plats, har vi använt samma plats i stället för två olika platser. Olika minnesplatser med olika variabler Betrakta följande två på varandra följande uttalanden: $ myVar = "Jag är innehållet i en stor textfil från hårddisken, nu i minnet.

"; $ Avar = "Jag är innehållet i en stor textfil från hårddisken, nu i minnet."; Du har två olika variabler med olika namn men med samma strängvärden. En variabel identifierar en minnesplats. Två olika variabler med två olika namn identifierar två olika minnesplatser, allt är lika. I fallet ovan, de två värdena, även om är samma, är i två olika minnesplatser. Samma Minne plats för två olika variabler i PHP kan du göra samma minnesplats har två olika variabler. De två olika variabler kommer naturligtvis att identifiera samma värde.

Tänk på varandra följande två påståenden: $ myVar = "Jag är innehållet i en stor textfil från hårddisken, nu i minnet."; $ hisVar = & $ myVar; För det första meddelandet du har ett värde tilldela variabeln $ myVar. I det andra meddelandet är $ myVar föregås med & tecken framför att tilldelas en ny variabel, $ hisVar. & Är en operatör. I det andra meddelandet, den & operatör, före den första variabeln, gör andra variabeln identifierar samma minnesplats (samma värde) som den första variabeln. En viktig sak att notera här är att & $ myVar hänvisar till en minnesplats innehåll.

Du kan också säga att & $ myVar avser värdet på minnesplats. För det andra meddelandet, & $ myVar, med &, kan betraktas som en referens, men $ hisVar kan inte betraktas som en referens; snälla, acceptera detta. $ hisVar är en variabel, inte en referens; bara acceptera detta. & $ myVar delas (ej jämställas) till $ hisVar och under loppet av tilldelas det gör $ hisVar identifiera samma minnesplats som $ myVar; acceptera detta. Acceptera dessa tre meningar Jag har just gett. Att försöka förstå varför de är som som kan göra dig att inte förstå PHP referenser.

Nu, om du skriver, $ myVar = "man"; eller $ hisVar = "kvinna"; Innehållet i samma minnesplats som identifierats av $ myVar samt $ hisVar skulle förändras. Det första påståendet skulle ändra innehållet till "man" och det andra meddelandet skulle ändra det till "kvinna". Med referera som sådan, både $ myVar och $ hisVar identifiera samma värde (minnesplats). Med hjälp av en referens utan Pre-deklaration eller Uppdrag I föregående avsnitt, och $ myVar tilldelades $ hisVar, och $ myVar redan deklarerats. Du kan använda en referens utan föregående deklaration eller uppdrag.

En referens består av & följt av ett variabelnamn. Variabelnamnet behöver inte existera innan, som i fallet ovan. I fallet ovan, har du och $ myVar, där $ myVar fanns innan. Du använder sådana referenser inom uttryck och uttalanden. Du kan inte börja ett uttalande med en sådan hänvisning. Du kan inte deklarera en variabel med en sådan hänvisning. Så du kan inte göra så här: & $ ref = "något värde"; //fel När du har en referens som & $ ref i ett kodsegment, kan du tilldela den till en variabel indirekt.

Ett argument, vilket är en variabel som deklarerats någonstans, kan ha tilldelats en referens, under ett funktionsanrop. Något i stil med: $ Thevar = myFn ($ var1); där $ var1 är en variabel deklareras någonstans (ovan) i koden. Funktionen, myFn (), återvänder och $ ref under körning, vilket är tilldelad $ Thevar. Vi kan säga, detta uppdrag har gjorts indirekt. En hänvisning hänvisar till en minnesplats. Du kan använda hänvisningen att göra vad du vill göra med minnesplatsen, som ändrar innehållet i minnesplatsen.

Du kan ha tilldelat indirekt hänvisning till en variabel och sedan använda innehållet i minnesplatsen, genom variabeln. I den här artikeln innehållet i en minnesplats och värde (bokstavlig), betyder samma sak. När du vet innebörden av en referens; det är ett steg i att förstå referenser. Nästa sak att göra är att lära sig att använda den. Läs vidare. Nackdelen med att inte använda en referens i vissa situationer Tänk dig att du har en textfil i en hårddisk, och innehållet i denna fil är nu i minnet. Du kanske har detta innehåll som en sträng, tilldelas en variabel, på vanligt sätt, i din kod.

Vad du verkligen vill göra med så stort innehåll från en fil, är att ändra vissa av dess text, ta bort en del av sin text eller lägga någon ny text till innehållet. Efter att du sparar innehållet tillbaka, som en fil på hårddisken och du behöver inte längre innehållet i minnet. Följande kod visar ett sätt att lägga till (lägga i slutet) text till sådant innehåll (det har en nackdel): $ var1 = ". Jag är innehållet i en stor textfil från hårddisken, nu i minnet"; funktion appendFn ($ var2) {$ var2 = $ var2. "Den sista text.

"; retur $ var2; } $ Var1 = appendFn ($ var1); echo $ var1; ?> I början av koden, har du variabeln $ var1. Till denna variabel tilldelas ett strängvärde. Denna strängvärde är kort, men låt den representera innehållet i en stor textfil. Därefter måste du funktionen, appendFn (). Denna funktion lägger strängen "Den sista text." till strängen av variabeln $ var1. Funktionen anropas enligt följande: appendFn ($ var1) där variabeln, $ var1 skickas som argument. Själva funktionen har parametern $ var2. När funktionen anropas, denna parameter identifierar värdet av argumentet skickas.

Denna parameter är faktiskt en variabel som skiljer sig från $ var1. $ var2 håller värdet av argumentet skickas av den anropande meddelandet. Så precis innan funktionen utförs, har du två olika variabler anger samma värde. Det är dock ingen av dessa variabler hantera referenser, så att du har samma värde på två olika platser i minnet. En av de platser identifieras med $ var1 och det andra identifieras med $ var2. Denna status fortsätter fram till slutet av programkörningen. Det finns två påståenden i funktionsdefinitionen. Det första påståendet lägger till strängen "Den sista text.

" till värdet av variabeln, $ var2. Det andra uttalandet returnerar värdet av variabeln $ var2. Funktionen kräver uttalande i koden (utanför funktionsdefinitionen) tar emot detta värde och återtilldelar det till variabeln, $ var1. I denna kod har ingen referenser officiellt använts. Så de två variablerna var och en har sin egen minnesplats. En variabel ligger utanför funktionsdefinitionen, och den andra är inne i funktionsdefinitionen. Läget för den rörliga utanför funktionsdefinitionen, har initialt ett strängvärde. Efter funktionsanropet, har denna plats ett snöre läggas till.

Läget för den rörliga inuti funktionsdefinitionen har initialt strängen att placeringen av variabeln utanför har. Den andra uttalande i funktionsdefinitionen lägger bit snöre till platsen. Observera att den ovan beskrivna tekniken har använts här. Förekomsten av dessa två platser är ett slöseri med minne. Med referenser, kan dessa två platser reduceras till en plats (se nedan). Nu är minnet alltid knappa. Det är som pengar, oavsett hur mycket du har, du fortfarande har anledning att behöva mer pengar. I ovanstående kod, har hela minnet inte har använts ekonomiskt.

Du måste alltid försöka använda så lite minne som du kan när det är möjligt. Vet att använda erat leder till en ekonomisk användning av minne och förbättrad prestanda för din kod. Passerar en variabel Referens Det finns situationer när du behöver bara hänvisa till en minnesplats, är variabel för minnesplatsen inte så stor roll. Skulle det inte vara trevligt, om du hade en referens som helt enkelt hänvisar till platsen för $ var1 variabeln i ovanstående kod. Du använder hänvisningen att bifoga bit snöre.

Efter funktionsanropet (uttalande) och genomförande av funktionen, behöver du inte referensen längre. På detta sätt kommer du att ha bara en minnesplats för att ta itu med, inte två som tidigare. Så du hushålla minne och det finns bättre prestanda. Följande kod visar detta (se förklaring nedan): $ var1 = "Jag är innehållet i en stor textfil från hårddisken, nu i minnet."; fungera appendFn (& $ ref) {$ ref = $ ref. "Den sista text."; returnera $ ref; } $ Var1 = appendFn ($ var1); echo $ var1; ?> Koden och den tidigare är likartade. Skillnaden är i funktionsdefinitionen.

När funktionen anropas, är variabeln $ var1 skickas som argument. Parametern av funktionen är nu en referens. Den rörliga delen ($ ref) av denna begäran har inte tidigare förklarats. Denna hänvisning inte tilldelas en ny variabel och kommer aldrig att tilldelas direkt (du kommer aldrig att få något liknande, $ someVar = & $ ref). Det är dock indirekt tilldelad $ var1 i början av genomförandet av funktionen. Så när funktionen utförs, både $ var1 och & $ ref betyder samma minnesplats. Stycket kod du anser som referens, börjar med &, följt av ett variabelnamn, t.ex.

$ ref, som börjar med $ undertecknas. Inne i funktionsdefinitionen, använder du variabelnamn delen föregås av $ att ta itu med plats som avses med hänvisningen. Som jag sagt ovan, efter att veta innebörden referens, måste du lära dig hur man använder det. I denna kod, är $ ref inuti funktionsdefinitionen med hänvisning till samma plats som $ var1 utanför. Avkastningen uttalande använder $ domaren skulle returnera innehåll (värde) på minnesplatsen. Det använder inte & $ ref trots & $ ref är effektivt vad funktionen samtals avkastning.

Det händer här, att källan och destinationsplats av innehållet är desamma. Som ni ser har vi använt endast en minnesplats i stället för två (som i det tidigare fallet). Vi har uppnått ekonomi av minne och förbättrad prestanda. Funktion Returnera Referens I ovanstående kod, var en referens tillbaka. Det är dock inte alla gånger när platsen för referensen är densamma som den av argumentet passerat. Vissa funktioner kanske inte har någon parameter (så få något argument), men du vill att det ska returnera en referens. Funktionen i följande kod inte får ett argument.

Funktionen returnerar en referens och den uppringande uttalandet, är hänvisningen indirekt tilldelas en variabel. funktion och AFN () {$ myVar = "ett värde"; retur $ myVar; } $ Thevar = AFN (); echo $ Thevar; ?>

Page   <<       [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.