PHP 2021 - merita sau nu

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 ===

2 Likes

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 -> ? :sweat_smile:

1 Like

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ă.

1 Like

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 :slight_smile:

Exista si in C si C++ acel operator :slight_smile:


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.

1 Like

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.

1 Like

Depinde ce te aștepți să facă acel number_format(), truncate, floor, ceil sau round. Au ales și ei ce-au putut :slight_smile:

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ă.

1 Like

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)…)

1 Like

Diferența e că nu toată lumea lucrează doar cu numere pozitive. floor(-1.5) ar da -2.

1 Like

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 :slight_smile: