pentru ca aecele hash-uri arata asa “0e462097431906509019562988736854” si “0e830400451993494058024219903391” iar daca folosesti == php incearca sa faca si type coercion, iar ca numere sunt egale, de aia e important ca mereu sa folosesti ===
Pentru ca pe undeva a fost intentionat (a fost un trade-off as putea spune).
Si desi sunt de acord cu cele mentionate de tine, tot as recomanda PHP incepatorilor.
chiar va place sa apelati o metoda cu ->
?
Pentru că succesul limbajului a fost accidental. De fapt, inițial nici măcar nu era un limbaj per se.
Uită-te la istoria/motivația din spatele PHP și o să te lămurești de unde atâtea aberații: PHP a fost scris pentru că lui Rasmus nu-i plăcea Perl în mod deosebit, dar avea nevoie de niște utilitare să afișeze informații dinamice în pagină.
Stiu, si de aceea am spus ca a fost intentionat. Iar successul nu a venit accidental ci a venit ca urmare a acestor decizii (luate pentru usurinta utilizarii). Tin si acum minte ce fericit eram ca nu mai trebuie sa declar marimea vectorilor la initializare + faptul ca puteam sa adaug orice in ei
Exista si in C si C++ acel operator
Thread relevant
Dacă tot vorbim despre tâmpenii din PHP: number_format
face round
dacă vrei zero decimale.
echo number_format( 1000000.5, 0, '.', ','); // 1,000,001
ala-i un comportament corect
pentru ca-i mult mai rau decat a apela o metoda cu .
pe bune, daca singurele tale probleme cu un limbaj de programare sunt simbolurile mai bine abtine-te.
Care? round
? Glumești, nu?
Pe mine mă disperă inconsistențele de genul asta, strstr(string $haystack, string $needle)
și array_search(mixed $needle, array $haystack)
, din cauza lor tot timpul când am haystack
și needle
trebuie să mă uit în documentație să văd ordinea parametrilor.
daca ai avea 1000000.4 si ti-ar spune ca-i 1000000, ala n-ar mai fi round?
ar fi frumos sa ma lase sa-i spun cum vreau sa faca rotunjire, da de facut tot face.
Depinde ce te aștepți să facă acel number_format(), truncate, floor, ceil sau round. Au ales și ei ce-au putut
LE Cred că și eu m-aș aștepta la truncate. Din moment ce am ales zero zecimale, înseamnă că nu mă interesează ce-i după virgulă.
diferenta intre floor si truncate fiind?
ps: idee de aplicatie. un editor care sa-ti spuna care-s parametrii acceptati de o metoda.
serios acum, si pe mine ma enerveaza. da ma ajuta ide-ul.
le: ar fi frumos sa-i pot spune. da probabil pentru ca si asa functia respectiva are 231121 parametrii cred ca-i mai simplu sa faci number_format(floor(x)…)
Diferența e că nu toată lumea lucrează doar cu numere pozitive. floor(-1.5)
ar da -2.
mda, m-am prins dupa ce-am scris. dar m-as fi asteptat sa stie sa faca asta nativ. aparent nu
Din cate tin minte vin de la librariile de c din spate, intrucat aceste functii de php, de obicei, sunt doar wrappere pentru ele.
Si am auzit la un momentdat ca sunt consistente in ideea de:
- Toate cu string sunt haystack needle
- Toate cu array sunt needle haystack
De fapt pare chiar o misiune complicată să faci acel truncate în php, trebuie să scrii ceva de genul $x > 0 ? floor($x) : ceil($x)
.
C nu are funcțiii pentru lucrat cu array-urile, deci sigur nu vine de acolo incosistența.
poti sa-l faci cu intval daca scopul e sa arunci zecimalele
Așa e, dar la cât de inconsistent e php nu era exclus să facă round sau cine știe ce altă năzdrăvănie și acolo