Što kada se nađe PHP bug

Pozdrav,

što kada se nađe PHP bug? Ima li tu kakva nagradica, gdje se to podiže? haha.

Pitanje je ekšuali ozbiljno, a bug još ozbiljniji. :confused:

Bilo bi dobro da ga prijavis. https://bugs.php.net/

Ako nema nagrade…evo onda zasada ovdje. Možda nije bug, možda je feature, haha. Tko zna.

Trick question…koliki je $x na kraju? :slight_smile:

$y=0;
$x=1;

if($y=='any stupid string'){
	$x = 2;
}else if($y===0){
	$x = 3;
}

echo $x; // ??

Feature je.

If the string is numeric or leading numeric then it will resolve to the corresponding integer value, otherwise it is converted to zero (0).

https://www.php.net/manual/en/language.types.integer.php#language.types.integer.casting

Hebate, čudan feature.

Znao sam da je 0==false , a da nije 0===false, ali ovo bogme nisam očekivao.

Al ok, kuzim logiku.
Sad sam s mobitela… čisto me zanima da su tipa zarotirane uspoređivane vrijednosti oko operatora, tipa: ‘any string’==0 … dali se onda casta string u broj…ili nula u string? :slight_smile:

Čovjek puzla i Vatreni znalac, moja dva omiljena superjunaka :smiley:

Inače, @bozoou, to je nepoznavanje alata s kojim radiš već više od 10 godina, Zanimljivo da si se tek sad susreo s tim. Uglavnom, opće poznata stvar zbog čega i ljudi najviše dislajkaju php. Ali samo do verzije 8.

Krivo. Pitanje za tebe: di vidiš numeric string ili leading numeric?
Ovo šta si linkao nema veze s primjerom koda koji je on stavio.

To bi imalo smisla i bilo bi točno za ovakav primjer:

echo 5 + '2 jabuke';

Koji će biti rezultat?

Šta se tiče primjera koji je @bozoou stavio, tu se radi o tome da rezultat ovisi o tipu parametra s kojim se uspoređuje. Npr:

$x = 0;
$y = 'a';

echo ( $x == $y ) ? 'yay' : 'nope';

Retultat je?

A sad ako promjenimo tip variable $x

$x = false;
$y = 'a';

echo ( $x == $y ) ? 'yay' : 'nope';

Znači, kad se uspoređuju različiti tipovi vrijednosti, castanje drugog parametra će ovisiti o tipu prvog parametra.

Ajme meni moj jorgovane. Hajde jos jednom procitaj sto sam napisao, pa se vrati ponovo :slight_smile:

Kasta se string u broj, tako da ces dobiti isti rezulltat.
Nije istina ovo sto ajme govori:

Comparison with Various Types: PHP: Comparison Operators - Manual

To mene spominjes? A niti ne sudjelujem u ovoj raspravi.:grin::grin::grin:

Je ispada tako :slight_smile: . Nisam htjeo, ispricavam se.
Sto bi rekli, svaka veza sa stvarnim osobama je slucajna.

1 Like

Ajde molim te objasni nam ovu tablicu na stranici koju si sam linkao i reci mi šta sam ja to krivo rekao?

A necemo tako. Objasniti cu ti to poslje. Hajmo se prvo uvjeriti da znamo gdje je problem.

Ajmo pomalo, prvo:

Jos uvijek tvrdis da odgovor nema veze sa pitanjem?

Bilo bi suludo kad bi poznavao u detalj svaki alat sa kojim radim. :slight_smile: To je opet glancanje samo jednog ferarria. :slight_smile:

Sreo sam se zapravo davno sa ovime. Prije valjda više od 10 godina…od tada radio u raznim jezicima i ostalo mi je samo mutno što ono PHP nešto čudno radi komparaciju…
Od tada Za PHP sam uglavnom koristio === i to mi je bilo sigurno utočište.

Znao sam da je nešto tu mutno ako se radi 0==false ili '0' == false i slične kombinacije …ali mi ni na kraj pameti nije bilo da će mu i ovo biti true 0 == 'any string'. To je vrlo nespretan feature. Ako pogledamo svrhu operatora == , onda je to poprilično nebulozno zamišljeno. (unatoč logici pozadi, koja je istina dosljedna nekim stvarima, svejedno se ovdje morala uvesti iznimka, tj. novo pravilo castanja u ovu svrhu)

Uglavnom, toliko nebulozno je da mi čak nije palo na pamet da je to dio istog problema sa kojim sam se sreo prije deset i kusur godina. Jer tada sam valjda isto sreo u nekoj logičnijoj/blažoj varijanti…

Eto, da ti srce bude mirno zašto nešto nisam znao. :smiley: …a ti dalje glancaj svog ferrarija, ja radije imam punu garažu auta koje doduše onda slabije poznam u dušu. :slight_smile:

Nije problem u ne poznavanju nečeg, ne postji osoba koja zna sve i stvarno taj dio nije problem. Ali, problem nastaje kad netko tko kaže za sebe da ima 10+ godina iskustva, misli da je pametniji od drugih i drži se visoko, a ustvari ne zna osnovne stvari. Sve 5, ne glancam ja ništa, osim par znalaca.

I mislio sam znalče, Vatreni.

Jedini problem je što ti ne znaš razlučiti bitno od nebitnog. To sam ti ukazao prvi puta kada si se uhvatio kenjati s visoka po codu radi uštede od 0.0000000002 sec …i od tada konstantno palamudiš nebi li dokazao da nisi ispao budala, a samo potvrđuješ isto tim nastupom… (A niti decimalnu točku ne znaš ispravno napisati, lol)

Ti si kreno s visoka ako se sjetiš tog tvog upada gdje ideš kenjati po codu da se uopće nisi osvrnuo na bitne stvari, nego na neke totalno nebitne…beznačajne… nevrijedne spomena…itd.

…i od tada samo nastavljaš u tom tonu. Hvala BOG.

Opet se hvataš za gluposti koje si sam izmislio. Nije ti lako, ego je zajebana stvar.

Pozdrav!

P.S

Radujem se novim avanturama mojih superjunaka, Čovjeka puzle i Vatrenog znalca!

Pametnom dosta.

Uuuuuu, nisam znao da si ti isto jedan od onih koji koriste “Pametnom dosta”. Mislim, očito je da pripadaš u tu skupinu, ali šta ja znam, očekivao sam više. Očito previše.

P.S.

Taj tipfeler sam mogao editirati, ali nisam, znaš zašto?

Al imaš pravo, mislim da se u ovom slučaju i ja držim visoko iako sam pokušao biti od pomoći ( uz pokoju uvredljivu opasku ). I stvarno, to nije način niti je lijepo. Stoga, povlačim se iz daljnje rasprave ovakvog tipa, jer rasprava u smjeru čiji je veći i tko je gluplji ne pridonosi ničemu.

Vidim da odlazis, ali evo ponesi sa sobom, a i da druge ne dovedes u zabludu…

u ovoj linij se dogadja pretvaranje stringa u integer:

$y=='any stupid string'

Kao i sva pretvaranja i ovo pretvaranje ima svoje pravilo, a to pravilo glasi:

If the string is numeric or leading numeric then it will resolve to the corresponding integer value, otherwise it is converted to zero (0).

Ja to nisam izmislio.

Autor pitanja je iz odgovora skontao, ti nisi jebiga.

A ovu drugu glupost koji si napisao ces ipak morati sam dokuciti.