laaczlv // Visnotaļ smilškaste. Privātīpašums. Te vairs nav, ko rakstīt. | 2025-08-28 08:22 EET here
 
 

laacz tagad klausās:
Radio NABA

 


Kārtot pēc pēdējā pļurkt

Autora domas ne vienmēr sakrīt ar autora domām. © spectator

Ir pagājuši 24 gadi un 7 mēneši un 27 dienas kopš mana mūža laimīgākās dienas

Papildus 3355 maniem pļurkšķiem ir sapļurkstēti 33189 sveši pļurkšķi.

ICQ: #58279153 (very rarely)
MSN:
E-mail:

Mazās pustizlās ikoniņas aiz linkiem (ne visiem) arī šo to nozīmē.
 

skābs ābols
roze.lv
~smejmoon
~aptieka (testing)
cietnis/blog
 
   
<br />
<br />
<br />
2004 5. marts piektdiena
08:23

Kā zināms, PHP nav strikti noteiktu mainīgo tipu. Piem., string <=> skaitlis konversijas notiek vienā vīlē. Taču, ir daži caveats, par kuriem vēlētos jums pastāstīt :) Konkrēti iet runa par to, kā pārvēršas strings par skaitli un ko darīt, lai tas notiktu puslīdz universāli.



Sāksim ar to, ka nodefinēsim - skaitlis var būt gan vesels, gan ar komatu un stuff.



Uzreizi rodas nepieciešamība apstrādāt ne tikai decimālo punktu (.), bet arī decimālo komatu (,). Tā kā PHP pēc noklusēšanas par decimālo atdalītāju uzskata tieši punktu, nevis komatu, tad nepieciešama viena īsa rindiņa:



$skaitlis = str_replace(',', '.', $skaitlis);


Tālāk. Liela daļa cilvēku pārbauda, vai ievadītais ir skaitlis, ar funkcijas is_numeric() palīdzību. Viss jau būtu labi, bet lietotājiem nereti ir tendence ievadīt ne tikai skaitli, bet arī dažas labas tukšuma zīmes pirms un pēc tā. Un ja ir šīs tukšuma zīmes, lielākoties, paziņojot, ka skaitlis ievadīts nepareizi, lietotājs apmulsīs, jo kļūdu neredzēs.



Ja cilvēks ievada ' 0.12' (pirms skaitļa ir atstarpe), tad viss ir ok. is_numeric() atgriež true.



Taču, ja atstarpe parādās pēc skaitļa, šī pati funkcija atgriež false. Šinī gadījumā mēs saucam talkā trim() un mūsu kods izskatās jau šādi:



$skaitlis = str_replace(',', '.', $skaitlis);
$skaitlis = trim($skaitlis);


Protams, ja nav nepieciešams apstrādāt lietotāja kļūdas, tad var izmantot type casting, pārveidojot skaitli par sev nepieciešama datu tipa pārstāvi kādā no sekojošajiem veidiem:



$skaitlis = (int)$skaitlis; // ja nepieciešams integer
$skaitlis = (double)$skaitlis; // ja nepieciešams double


Starp citu, es neizmantoju funkciju intval(), jo, ja veicu type castu, tad es vēlos, lai tādās vietās es to ieraudzītu uzreizi, nevis meklētu, kur tad ir funkcija...



Vēl viens moments. Iespējams, ka nesaistīts. Kā jums liekas, ko atgriezīs sekojošais piemērs?



$a = (0.1 + 0.7) * 10;
echo intval($a); // Būtu jābūt 8, vai ne?


Ja nepieciešams pārveidot reālus skaitļus par veseliem, ieteicams ir izmantot round() funkciju, jo vienkāršs (int) vai intval() nepalīdzēs. Peldošais punkts un precizitātes problēmas, va zi' :)

 
muldis (#20221)   08:56 @ 2004. gada 5. marts, piektdiena
new Ja pavisam strikti skatās, tad cilvēkiem ir arī tendence raks'tīt skaitļus šādi 10 000 000, līdz ar to jārepleiso visi " ".
 
Delf (#20222)   09:14 @ 2004. gada 5. marts, piektdiena
new nu nezinu, man liekas x xxx xxx figuree tikai display modee - tad kad paraada userim. bet reali dati glabaajaas kaa viens vesels strings/numbers

ir funkcija number_format(..) jamaa visu pareizi izdara
 
MMK (#20224)   10:23 @ 2004. gada 5. marts, piektdiena
new lai pārbaudītu vai ir skaitlis ir labāk izmantot preg_match...
 
laacz (#20225)   10:26 @ 2004. gada 5. marts, piektdiena
new MMK: muļķības. Tas būs lēnāk (regulārā izteiksme būs vienkārši monstroza).
 
MMK (#20226)   10:35 @ 2004. gada 5. marts, piektdiena
new Iespējams...
A ir iespējams dabūt no skaitļa 9 skaitli 9.00 ar kādu built-in f-ju?

Vai arī pašam ir jāraxta?
 
laacz (#20227)   10:39 @ 2004. gada 5. marts, piektdiena
new MMK: echo number_format(9, 2);
 
Laacz: (#20228)   11:11 @ 2004. gada 5. marts, piektdiena
new Par šito liels paldies, sen jau bija vajadzība, jo nu pie string f-jām to galīgi nebiju meklējis... :)
 
Grrr (#20233)   13:34 @ 2004. gada 5. marts, piektdiena
new >> ko darīt, lai tas notiktu puslīdz universāli.
[...]
A ko PHP sscanf() neatpazīst visus šos variantus?
Un user inputam ir vai nu jābūt %d vai %f, atkarībā no vajadzības.
 
elfz (#20240)   16:58 @ 2004. gada 5. marts, piektdiena
new kamēr ļaužu prasībās nebūs punkta par iespēju skaitļus vadīt eksponenciālajā formātā, būs ok ;p
 
Kaspars (#20248)   09:49 @ 2004. gada 6. marts, sestdiena
new Runa nekur neiet!!
 
ulzha (#20286)   22:21 @ 2004. gada 8. marts, pirmdiena
new Kāpēc lai neietu? Tāpēc ka "no krievu valodas"? Apsmadzeņojam tagad šitādu domu - ja daudzi tā saka, turklāt saprot viennozīmīgi, tad vai tā nav pareiza valodas konstrukcija? Es par izsaukumzīmju skaita samazināšanu...
 
Kā tu saucies:  
Īmeils:  

Mazliet komentāru kultūras, jeb laacziquette

  • Ja tu gribi pateikt tikai ':)', tad saki to sev un pie spoguļa. Pašam prieks un es esmu mierīgs.
  • Neaizraujies ar enteriem savā komentārā. Pavisam nav obligāti likt divus vai trīs enterus pēc katras uzrakstātās rindiņas.
  • Offtopiks (komentāri ne pa tēmu) nav no gaidītākajām lietām.
  • Galu galā, ja tev ir verbāla caureja, ej uz delfiem vai arī taisi pats savu lapu.
  • Pirms spiest pogu, padomā. Varbūt tu vēl neesi visu pateicis? Lai nebūtu pēc tam vēl 26 pēc kārtas esošu komentāru jāraksta.
  • Vēlies runāt ar kādu cilvēku, uzraksti viņam vēstuli. Ir daži izņēmumi. Agressor, tu neesi izņēmums.
  • Un, galu galā, paturu tiesības jebkuru sev neimponējošu komentāru izmēzt.
     
  • Par izņēmumu kādā no šiem punktiem, vai arī visos noteikumos var kļūt, uzrakstot iesniegumu un iedodot man to rokā. Iesnieguma vēlamais apjoms - 0.7 laba viskija.
     
  • Gan jau kaut ko vēl izdomāšu.
 
 
© 1996 - 2025 laacz | Visas tiesības, nu jūs jau zināt..
Spēcināts ar SPP v1.0 public beta