PHP-nummer från sträng i int. Manipulations med PHP-datatyper
PHP kräver inte (och stöder inte) uttryckligen definierad typ när man förklarar en variabel Den typ av variabel bestäms enligt det sammanhang där den används. Det vill säga om du tilldelar strängvärdet för $ Var-variabeln blir $ Var en sträng. Om du sedan tilldelar $ var i ett heltal värde, blir det ett heltal.
Ett exempel på automatisk typomvandling är tillsatsoperatören " + "Om någon av operanderna är ett flytande punktnummer tolkas alla operander som ett flytande punktnummer, kommer resultatet också att vara ett flytande punktnummer. Annars kommer operanderna att tolkas som heltal och resultatet kommer också att vara heltal. Observera att detta inte ändrar de olika typerna av operanderna själva; bara som de beräknas. Några praktiska exempel:
$ Foo \u003d "0"; // $ foo är en sträng (ASCII 48)
$ foo + \u003d 2; // $ foo nu ett heltal (2)
$ Foo \u003d $ foo + 1.3; // $ foo nu ett flytande punktnummer (3.3)
$ Foo \u003d 5 + "10 små piggies"; // $ foo är ett heltal (15)
$ Foo \u003d 5 + "10 små grisar"; // $ foo är ett heltal (15)
?>
Om du vill testa något av de exempel som anges i det här avsnittet kan du använda funktionen var_dump () .
Uppmärksamhet: -1 Överväga Sann., som alla icke-noll (negativt eller positivt) nummer!
Exempel på transformationer:
Var_dump (bool) "); // bool (false)
var_dump ((BOOL) 1); // bool (sant)
var_dump ((BOOL) - 2); // bool (sant)
var_dump (bool) "foo"); // bool (sant)
var_dump (BOOL) 2.3e5); // bool (sant)
var_dump (BOOL) Array (12)); // bool (sant)
var_dump (bool) array ()); // bool (false)
var_dump (bool) "false"); // bool (sant)
?>
Konvertera från typ booleska
Falsk konverteras till 0 (noll), och Sann. - i 1 (enhet).
Flytkonvertering
När man konverterar från en flytande punkt till ett heltal, kommer numret att avrundas i riktning mot noll.
Om det flytande punktnumret överstiger gränserna för hela (som regel är det +/- 2,15E + 9 \u003d 2 ^ 31), kommer resultatet att vara osäkert, eftersom hela inte har tillräcklig noggrannhet för att returnera det korrekta resultatet . I det här fallet kommer ingen varning inte att återkallas
Uppmärksamhet! Ge aldrig en okänd fraktion i det hela, eftersom det ibland kan ge oväntade resultat, till exempel:
echo (int) ((0,1 + 0,7) * 10); // Visar 7!
?>
Strängkonvertering
Transformationer från andra typer
För andra typer definieras inte konverteringsbeteendet. För närvarande är beteendet detsamma som om värdet var först. men inte Lita på detta beteende, eftersom det kan förändras utan varning.
Booleo ( booleska.) Värde Sann. konverteras till strängen "1" och värdet Falsk Det verkar som "" (tom sträng). På så sätt kan du konvertera värden i båda riktningarna - från boolesktyp till en sträng och vice versa.
Hel ( heltal) eller ett flytande punktnummer ( flyta.) Det omvandlas till en sträng representerad av numret som består av sina nummer (inklusive en indikator på graden för ett flytande punktnummer).
Arrays konverteras alltid till "array" -strängen, så att du inte kan visa innehållet i matrisen ( array.) Använder sig av echo () eller skriv ut ()För att ta reda på vad den innehåller. För att se ett element måste du göra något som ett Echo $ ARR ["foo"]. Se nedan tips om hur du visar / visa allt innehåll.
Objekt konverteras alltid till "Objekt" -strängen. Om du vill visa värdet på medlemmen i objektet ( objekt.) För felsökning, läs följande stycken. Om du vill få namnet på klassen av det önskade objektet, använd get_class () .
Resurser omvandlas alltid till strängar med strukturen "Resurs ID # 1", där 1 är ett unikt resursnummer ( resurs), tilldelad till honom PHP under utförandet. Om du vill få en resurstyp, använd.
NULL Alltid konverterad till en tom sträng.
Utgången av arrays, objekt eller resurser ger dig inte någon användbar information om värdena själva. Ett lämpligare sätt att mata ut värden för felsökning - Använd funktioner print_r () och var_dump () .
Du kan också konvertera PHP-värden till strängar för konstant lagring. Denna metod kallas serialisering och kan utföras med användning av en funktion. serialize () . Dessutom, om du har ett WDDX-stöd i din PHP-inställning, kan du serialisera PHP-värden i XML-strukturen.
Konvertera till array typ (arrays)
För vilken typ som helst: heltal, flyta., sträng, booleska. och resursOm du konverterar värdet till en array får du en array med ett element (med ett index 0), vilket är det skalära värdet från vilket du började.
Om du konverterar objektet till en array ( objekt.), Kommer du att få en rad av egenskaperna (medlemsvariabler) för detta objekt som element. Nycklarna kommer att vara namnen på medlemsvariablerna.
Om du konverterar till ett arrayvärde NULLDu får en tom array.
Konvertering till objekttyp (Objekt)
Om objektet konverteras till objektet ändras det inte. Om objektet omvandlas till värdet av någon annan typ skapas en ny instans av den inbyggda STDClass. Om värdet var tomt, kommer den nya instansen också att vara tom. Med något annat värde kommer det att innehålla i skalärmedlemsvariabeln:
$ Obj \u003d (objekt) "ciao";
Echo $ obj -\u003e skalär; // kommer "ciao"
?>
Information var hela tiden symboler. Endast när programmeringen kom fram blev det delvis bokstäver, siffror och tecken (i formell betydelse).
Upp till den berömda tiden var muntligt tal mest populära, självgjorda symboler, gester, liksom konstverk, i synnerhet. Det är viktigt att alla dessa alternativ för den naturliga presentationen av information från små till stor kan alltid beskrivas i ord, det vill säga att du kan få tillgång till programvara i en viss mening.
Rader och siffror
Rader är framförallt totaliteten av olika tecken. I olika programmeringsverktyg separerades fraktionerna från det hela annorlunda. Några föredragna punkten, andra kommatecken (i PHP, radövervandlingen till numret innebär. ""). Triagnade separerades av en enda apostrof, kommatecken eller ett utrymme. De reella talen registrerades genom bokstaven "E".
Alla dessa formaliteter. Matematik och principer för något processor har alltid erkänt siffrorna utan överskott, och de relevanta ytterligare processorerna utvecklades med reella värden.
Men världen av variabler av variabeltyp (för ERA startprogrammen) och genomförandet av den moderna tanken om konsensusen för alla typer av data betyder: i PHP konvertera en sträng till numret ändå att ingenting är gjort. I bästa fall kommer PHP "att skära", eller snarare, kommer att göra 0 eller nummer om det finns minst en siffra i den ursprungliga linjen. Alla siffror till den första icke-engagemangssymbolen kommer att göra detta nummer.
Allmän omvandlingsregel
På PHP är radomvandlingen i ett nummer om programmeraren inte anger en annan, sker automatiskt vid användningstillfället. Om variabeln endast innehåller siffror och en punkt, kan ett reellt tal erhållas. Om kommatecken möts i sekvensen av siffror, så kommer allt som går till det att tolkas som ett tal, naturligt, hela.
Varje icke-tillskottssymbol i antalet nummer stoppar processen, och resultatet av att konvertera PHP "rad till numret" kommer bara att vara den mening som bildades till den första icke-merpure-symbolen.
Matematik och symbolbehandling
Det som är svårare, först eller andra, även från formlerna, som inte är placerade på sidan, imponerande matriser, grafer, att unravel, som ibland inte ens kan författare härledda från integraler, skillnader från integraler och polynomier i n-volymen Generation, att säga mycket enkelt: samhället, utan tvivlar, hedrar förmånen av matematik och matematiker, men bearbetningen av tecken är viktigare, mer komplicerad och täcker matematik, som en döende filt, vilket ger ett nyfiken sinne som inte kan gå utöver den magiska av siffror, en gynnsam miljö för kreativitet.
Vanligtvis på PHP-raden till numret konverteras automatiskt, men det kommer aldrig att vara överflödigt för att kolla in det. Det är bäst att alltid vara säker: PHP förstår korrekt att en eller annan variabel är ett nummer. Om det finns en skugga av tvivel, bör du uttryckligen ange vilken typ av variabel (INT) eller (flottör) före värdet och kontrollera hur PHP förstår vilken typ av funktion som variabel är () eller is_float ().
Trender av modern programmering
Den klassiska tolkningen av uppgiften på PHP "-linjen till numret" ligger inom representationerna av modern programmering. Den omvända processen har betydligt mer olika alternativ. Funktioner number_Format (), Printf (), Sprintf () Du kan arbeta underverk, och inte bara på nivån, men också grupper av siffror.
PHP-transformation " rad till numret "vittnar, snarare, det och det här kan, men mamentics och numeriska beräkningar är inte vår häst.
Skriv en anständig och pålitlig funktion som implementerar en eller annan bearbetning av siffror till PHP inte representerar problem, och resultatet blir inte sämre än resultatet från mer matematiska språk. PHP är först och främst serverns språk, språk för behandling av information, inklusive matematisk natur.
Bland de olika programmeringsuppgifterna är olika manipuleringar med värdena för datum och tid ganska vanliga. Ett sällsynt automatiserat system kan databasen utan att spara information om tiden för denna eller den processen. Förutom det enklaste tillägget av datumet till databasposten eller visa det här datumet finns det många uppgifter att mata ut dessa datum i en annan form, kontrollera korrespondensen av den aktuella tiden med en viss timer, beräkningen av perioden mellan två datum och mycket mer.
För bekvämligheten med datum har varje programmeringsspråk sina egna speciella datatyper för att lagra datum och tidsvärde. Oftast är detta ett numeriskt värde, eller ett heltal eller flytande punkt.
I PHP står arbetet med datumet oftast inför UNIX Timestamp. Här lagras tiden i ett heltal. Kalkylen av tiden börjar den 1 januari 1970. Därför, till exempel datum och tid 11.12.2014 19:40:00, kommer det att representeras av antalet 1418316000. Denna siffra visar hur många sekunder som skickas från nolldatum den 1 januari 1970, kallad Unix-tiden.
Ett exempel på en PHP-sida som tillhandahåller datakonverteringsfunktioner på webbplatsen i programavsnittet "Konvertera datum och tidsformat". Här kan du bilda önskat datum i Unix Timestamp-formatet, liksom ta med detta format till en standard, förståelig vy.
Få aktuell tid och datum i PHP
För att få den aktuella serverns tid används en funktion.
int tid (tomrum)
som kommer att returnera värdet i UNIX Timestamp-format.
echo tid (); // Utgång av den aktuella tiden i UNIX Timestamp-format
Vid första anblicken är ett mycket bekvämt format för en person, men som är känt, den enklare utsikten över data, desto snabbare bearbetning av dessa värden av datorn utförs. Dessutom är lagringen av numret i databasen mycket mer ekonomiskt än något speciellt format. Dessutom fungerar PHP med tiden lika och på UNIX och på Windows-plattformen, vilket ger möjlighet att använda koden på någon av dessa plattformar.
Konvertera datum och tidsformat i PHP
Den enklaste mekanismen som låter dig konvertera ett numeriskt värde till mer begripliga värden, tillhandahålls av funktionen:
array GetDate ()
Den returnerar en associativ array som innehåller information om datumet. Om tidsstämpelparametern inte är angiven, kommer den aktuella tiden att returneras. Den här arrayen innehåller följande värden:
Den resulterande arrayen låter dig visa värdet i önskad form:
$ DATUM \u003d 1418372345;
$ DATE_MAS \u003d GETDATE ($ DATE);
echo $ Date_mas ["May"]. ".". $ DATE_MAS ["MON"]. ".". $ DATE_MAS ["År"]; // 12/12/2014
För att konvertera datum och tidsformat kan du också använda funktionen:
string Date (String $ Mall [, int $ unix_timestamp])
Den är utformad för att ta emot det aktuella datumet för UNIX Timestamp i önskat format. Den $ mallsträngsparametern bestämmer utmatningsformatet. Den $ unix_timestamp-parametern kan ställas in, med vilken tid tiden utförs. Det är valfritt, så om du inte anger det, kommer det aktuella datumet och tiden att användas.
Formatet är inställt i följande värden:
a. | "TILL" OCH "AFTER" MOON: "AM" eller "PM" |
A. | "Till" och "efter" middag i stora bokstäver: "Am" eller "PM" |
d. | dag i månaden 2 siffror (om mindre än 10, i den första platsen noll) (från 01 till 31) |
D. | dag i veckan 3 bokstäver. Till exempel, "mon" (måndag) |
j. | månadens dag, 1-2 nummer utan initial nollor (från 1 till 31) |
F. | namnet på månaden. Till exempel, "januari" |
h. | timme, 12-timmarsformat (från 01 till 12) |
H. | timme, 24-timmarsformat (från 00 till 23) |
g. | timme, 12-timmarsformat utan nollor (från 1 till 12) |
G. | timme, 24-timmarsformat utan nollor (från 0 till 23) |
jag | minuter (från 00 till 59) |
Jag (kapital I) | 1, om det finns en dagsljus, annars 0 |
L. | 1, om årets språng, eller 0 om inte språng |
B. | tid i Internet-tidsformat (Alternativt Time Counting System) (från 000 till 999) |
T. | datorns tidszon. Till exempel mdt. |
l (små bokstav l) | veckodag. Till exempel "måndag" |
m. | månad, två siffror med nollor (från 01 till 12) |
n. | månad, en eller två siffror utan nollor (från 1 till 12) |
M. | förkortat namn på månaden. Till exempel, "Jan" |
t. | antal dagar i den angivna månaden (från 28 till 31) |
s. | sekunder (från 0 till 59) |
S. | engelska-språksekvens suffix Antal två bokstäver ("ST", "ND", "RD" eller "TH") |
U. | ett heltal antal sekunder sedan början av UNIX-eran |
y. | År, digitala, 2 siffror (14) |
Y. | År, digitala, 4 siffror (2014) |
z. | dagens ordinära antal (från 0 till 365) |
Z. | blandningstidszon i sekunder (från -43200 till 43200) |
N. | sekvensnumret för veckodagen från 1 (måndag) till 7 (söndag) i enlighet med ISO-8601-standarden (tillsatt i PHP 5.1.0) |
w. | sekvensnumret för veckodagen från 0 (söndag) till 6 (lördag) |
W. | Årets sekvensnummer i enlighet med ISO-8601-standarden; Veckor börjar från måndag (läggs till i php 4.1.0) |
o. | antal året i enlighet med ISO-8601-standarden. Den har samma betydelse som Y, förutom fallet när antalet ISO (W) vecka är ett av föregående år. Då kommer året i veckan att användas. (Tillagd i PHP 5.1.0) |
e. | kodzonskalskoden. Till exempel: UTC, GMT, Atlanten / Azorerna (tillsatt i PHP 5.1.0) |
O. | skillnaden med tiden för Greenwich, dygnet runt. Till exempel: +0200 |
P. | skillnad med Greenwich Time med en kolon mellan klockan och minuter. Till exempel: +02: 00 (tillsatt i PHP 5.1.3) |
c. | datum i ISO 8601 Standardformat. Till exempel, 2014-12-12T15: 19: 21 + 00: 00 (PHP 5 tillsatt) |
r. | datum i format »RFC 2822. Till exempel: THU, 21 dec 2000 16:01:07 +0200 |
U. | antal sekunder som har gått sedan början av UNIX-eran (Unix Epoch, 1 januari 1970 00:00:00 GMT) |
Som du kan se från listan kan du få mycket användbara data på den här funktionen. Till exempel:
$ DATUM \u003d 1418372345; // Källa Datum och tid 12.12.2014 11:19:05
echo datum ("d.m.y", $ datum); // 12/12/2014 (datum)
echo Datum ("H: I: s", $ Datum); // 11:19:05 (tid)
echo Datum ("H: I", $ Datum); // 11:19 (tid)
echo Date ("T", $ Datum); // 31 (antal dagar i en månad)
echo Date ("Z", $ Datum); // 345 (sekvensnummer på dagen per år)
echo Datum ("L DS \\ OF Y H: I: S A", $ Datum); // fredag \u200b\u200b12 december 2014 11:19:05
Andra tecken som ingår i mallen visas i raden som den är. Om du behöver ange ett tecken som används i funktionen som en formatkod, är "\\" -symbolen införd framför dem. För värdet "\\ n" (övergång till en ny sträng) bör du ange "\\\\ n". Således kan du dra ett helt meddelande som innehåller information om datum och tid:
echo Date ( "Idag Z-t-dagen y-året", $ datum); // Idag är den 345: e dagen 2014
Konvertera datum och tid i Timestamp-format
För omvänd konvertering av datumet från standardformatet till det numeriska värdet av tidsstämpel används en funktion:
iNT MKTIME (]]]]]])
MKTIME () -funktionen returnerar tidsvärdet för UNIX, motsvarande datum och tid som anges av argumenten. Till exempel:
$ My_date \u003d mktime (10, 30, 0, 12, 12, 2014);
Det bör noggrant relateras till ordningen för funktionens argument: timmar, minuter, sekunder, månad, dag, år.
Förutom den enkla bildandet av datumvärdet i Timestamp kan funktionen MKTIME () användas för aritmetiska beräkningar med datum. För att göra detta kan du helt enkelt ange de nödvändiga argumenten. Till exempel, om du anger 14 månader, då i det slutliga värdet, kommer månaden att vara 2: a, och årets värde kommer att öka med en:
$ My_day \u003d 12;
$ My_month \u003d 12;
$ My_year \u003d 2014;
$ new_date \u003d mktime (0, 0, 0, $ my_month + 5, $ my_day, $ my_year);
echo datum ("d.m.y", $ new_date); // 12.05.2015 (Datum)
På samma sätt kan du agera med andra parametrar.
Verifiering av korrektheten av datumet i PHP
När du arbetar med datum, speciellt när datumet genereras ovanför MKTIME () -funktionen är det nödvändigt att ta hänsyn till korrektheten av den angivna tullen. För att göra detta använder PHP en funktion:
bool checkdate (int månad, int dag, int år)
Returnerar sant om det datum som anges av argumenten är korrekt Annars returnerar falska. Datumet anses vara korrekt om:
År som sträcker sig från 1 till 32767;
Månad som sträcker sig från 1 till 12;
Dagen för en given månad, med hänsyn till språngåret, är korrekt.
Exempel Kontrollera datum:
$ My_day \u003d 32;
$ My_month \u003d 12;
$ My_year \u003d 2014;
om (! Checkdate ($ my_month, $ my_day, $ my_year))
eko. "Fel: Datum är felaktigt";
Jag har en ansökan som berör kunder från hela världen, och självklart vill jag att allt ska komma in i mina databaser, det kodades i UTF-8-kodningen.
Det största problemet för mig är att jag inte vet vilken kodning av källan till någon rad kommer att vara - det kan vara från textfältet (användning