ugrás a tartalomhoz

isset() is_null()

szabo.b.gabor · 2009. Ápr. 10. (P), 16.23
Sziasztok!

csak egy érdekességet szeretnék megosztani. esetleg ha valaki tudna rá valami megoldást, akkor mondja meg nekem.

tehát van egy php által összerakott sql lekérdezésem aminek sorait fetch_object()-tel kérem vissza. az sql változik, néha úgy ad vissza hogy

$row->idcolor
$row->elek


néha meg úgy hogy

$row->color
$row->elek


mindez annyival megbolondítva, hogy az idcolor és a color értéke lehet NULL is

kiírásnál meg attól függően, hogy idcolor vagy color szerepel az adott objektumban, másként kellene megjeleníteni.

valahogy így

<? if(isset($row->idcolor)): ?>
	kiírom így <?= $row->idcolor ?>
<? else: ?>
	kiírom úgy <?= $row->color ?>
<? endif; ?>
De! ha éppenséggel épp volna idcolor, de az NULL értékű, akkor az isset() false-t fog visszaadni, az else ágon pedig egy szépséges notice fog megjelenni. ha is_null()-t is bevetek a vizsgálódásba, akkor ha épp nincs is idcolor az is_null akkor is true-t fog visszaadni, vagy valami ilyesmi (ilyen fényes lakkcipő szerű:D).

végülis a megoldás annyi, hogy

<? if(isset($row->idcolor)): ?>
	kiírom így <?= $row->idcolor ?>
<? elseif(isset($row->color): ?>
	kiírom úgy <?= $row->color ?>
<? endif; ?>
legalábbis nálam, mert a 'kíirom így' és a 'kiírom úgy' üres téma esetén nálam ugyanazt adja vissza, nevezetesen semmit :), de mi van ha valaki tényleg ki akar írni valamit és az más.

szóval ha sikerült érthetően leírnom a dolgot és tud rá valaki megoldást, akkor ossza már meg.
 
1

array_key_exists(), property_exists()

Poetro · 2009. Ápr. 10. (P), 17.10
A fenti problémára az array_key_exists, illetve PHP 5.1-től kezdve a property_exists a megoldás. PHP 5.3-tól kezdve pedig csak utóbbi fog működni.
2

Köszike

szabo.b.gabor · 2009. Ápr. 11. (Szo), 15.05
:D
3

Fetch assoc gyorsabb

inf · 2009. Ápr. 15. (Sze), 02.29
Annyit még hozzátennék, hogy a fetch assoc nyilvánvalóan gyorsabb, mint az object, mert tömb létrehozásához sokkal kevesebb kraft kell.
Persze ez gondolom teljesen lényegtelen, mert nem 100k felhasználóval dolgozol, ahogy sajnos én sem :D