Kezdőoldal » Számítástechnika » Programozás » Kezdő vagyok. Hogy lehet ezt...

Kezdő vagyok. Hogy lehet ezt értelmezni? while (! ( ($bejegyzes= readdir ($konyvtar) ) === false) ) {

Figyelt kérdés
A könyv azt mondja, a readdir() akkor ad vissza hamisat, ha nincs több bejegyzés. ($bejegyzes= readdir($konyvtar) igaz, ha a negáltja teljesül, akkor false, de akkor minek oda még a false?
2018. jún. 23. 14:45
 1/8 anonim ***** válasza:
0%

Ekvivalens ezzel:

while ( ($bejegyzes= readdir ($konyvtar)) === true )


Kicsit túl lett bonyolítva csak.

2018. jún. 23. 14:53
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:

#1: Elolvastad te a readdir dokumentációját?


Returns the entry name on success or FALSE on failure.

[link]


Szóval true soha nem lesz.


Kérdező: Pontosan melyik részét nem érted. A readdir visszaad egy stringet vagy falset. A Ciklus addig megy, amig a visszadott ertek nem false és mellesleg beleteszi ezt az értéket a $bejegyzes valtozóba.

2018. jún. 23. 14:57
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
"This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function."
2018. jún. 23. 15:11
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

"Pontosan melyik részét nem érted." A kérdésben az utolsó mondatban leírtam, hogy melyik az a rész, amit nem értettem. De most már letisztult, az 1-es válaszával....


Köszönöm

2018. jún. 23. 15:29
 5/8 anonim ***** válasza:

#4 Kivéve, hogy az #1-es válasza nem jó, mert soha nem fogsz true-t visszakapni. Vagy visszaad egy értéket, vagy FALSE-t. TRUE-t soha. Hogy miért kell oda explicit az === false? Mert a függvény visszatérhet olyan értékkel, ami false-ra értékelődhet ki (pl 0), de valójában egy valid visszatérési érték. Ezért kell explicit módon ellenőrizni, hogy false-t ad vissza, és nem valami mást, ami false-ként értelmezhető.


Beszédesebb példa az array_search használata elágazásban. Az array_search megkeres egy adott értéket egy tömbben, és visszaadja az indexet, amelyen található, vagy FALSE-t. Akárcsak itt, az array_search esetében is explicit módon kell false-ra ellenőrizni. Miért? Mert lehet, hogy a keresett érték a legelső eleme a tömbnek, vagyis a 0. indexén található. A 0 viszont false-ként értelmezhető.

2018. jún. 23. 16:13
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
És ugye többek között ezért nem használnak értelmesebb helyeken PHP-t, mert ez a dinamikus, gyenge tipusosság kész horror és elképesztően sok, nehezen felderíthető bughoz vezethet.
2018. jún. 23. 17:31
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:

Bizony, úgy van, ahogy a 80%-os válaszoló írta. Muszáj false-t vizsgálni, mert a visszatérési érték vagy egy szöveg, vagy false, nincs más opció. Tehát itt a "nem false" az nem true-t jelent, hanem egy sztringet.

A fenti linkről:

"Please note the fashion in which readdir()'s return value is checked in the examples below. We are explicitly testing whether the return value is identical to [..] FALSE since otherwise, any directory entry whose name evaluates to FALSE will stop the loop (e.g. a directory named "0")."

2018. jún. 23. 21:04
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
(Egyébként egy ilyen programsorhoz erősen javallott egy pár szavas kommentet tenni, hogy miért van így írva, nehogy valaki "kijavítsa".)
2018. jún. 24. 09:34
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!