Array return PHP-ben
Sziasztok!
Néztem manuálban, de tudok rájönni, hogy hogyan kell tömböt returnolni. Az alábbi kód valamiért nem működik, de nem értem mi vele a baj, mert több oldalon is ezt a megoldást ajánlották a forumozók.
function kiolvas(){
/*bla
bla*/
while ($output=mysqli_fetch_row($query)) {/*akármi*/
}
return $output;
}
Idáig a kívánt eredményt kapom.
Innen viszont már üres a tömb:
kiolvas();
$c=kiolvas();
for ($i=0;$i<=count($c);$i++) {echo "<option value=$c[$i]".">"."$c[$i]";}
}
Miért nem adódik át az érték?
■ Néztem manuálban, de tudok rájönni, hogy hogyan kell tömböt returnolni. Az alábbi kód valamiért nem működik, de nem értem mi vele a baj, mert több oldalon is ezt a megoldást ajánlották a forumozók.
function kiolvas(){
/*bla
bla*/
while ($output=mysqli_fetch_row($query)) {/*akármi*/
}
return $output;
}
Idáig a kívánt eredményt kapom.
Innen viszont már üres a tömb:
kiolvas();
$c=kiolvas();
for ($i=0;$i<=count($c);$i++) {echo "<option value=$c[$i]".">"."$c[$i]";}
}
Miért nem adódik át az érték?
Hol vársz értéket?
kiolvas()
hívást látok, az egyiknél használod a visszaadott tömböt a másiknál nem. Sajnos az nem derült ki, pontosan mit is csinál a kiolvas függvényed, mivel nem sok derül ki, még az is lehet hogy tényleg nincsen eredménye a lekérdezésnek. Próbálkozz valami egyszerű teszteléssel, mondjuk adj vissza egy saját tömböt a kiolvas-ban, vagy ilyesmi. Az hogy miért nem adódik vissza neked érték, kicsit többet kellene tudni a kódodról, mert így sötétben tapogatózunk.Több sebből vérzik...
mysqli_fetch_row -nak nem adhatsz meg query-t, hanem egy eredményazonosítót, amit egy mysql_query( $query ) visszaad
while ($output=mysqli_fetch_row($query)) {...
a while addig megy végig az eredményen, amíg NULL-t nem kap (a végére ér), tehát az output értéke a végén NULL lesz (minden ciklusban felülírod az értékét)
Valahogy így kéne:
" "Idáig a kívánt eredményt
Kiírattam a tömb elemeit.
"addig megy végig az eredményen, amíg NULL-t nem kap (a végére ér), tehát az output értéke a végén NULL lesz (minden ciklusban felülírod az értékét)"
Itt rontottam el, ugyanis arra számítottam, hogy a ciklus lefutása után nem íródik felül az érték, hanem új tömbelemként hozzáíródik az $outputhoz.
A $query nálam nem a lekérdező parancs volt, hanem a mysql_query() kimenete. Valóban logikusabb lett volna $resultnak nevezni a változót. Az általad leírt kód már működőképes volt, köszönöm a válaszokat.