ugrás a tartalomhoz

Array return PHP-ben

reagenross · 2010. Jún. 26. (Szo), 23.51
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?
 
1

Hol vársz értéket?

Poetro · 2010. Jún. 27. (V), 00.01
Én a te kódodban két 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.
2

Több sebből vérzik...

plip · 2010. Jún. 27. (V), 08.51
"Idáig a kívánt eredményt kapom." - ezt hogyan ellenőrizted? Több sebből vérzik az egész:

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:

function kiolvas(){
  $result = mysqli_query( $query );
  while ($output=mysqli_fetch_row( $result )) {
    $output_array[] = $output;
  }
  return $output_array;
}
és légyszíves használd a kódszinezőt, megkönnyíted mindenki dolgát vele ;)
3

" "Idáig a kívánt eredményt

reagenross · 2010. Jún. 28. (H), 22.42
" "Idáig a kívánt eredményt kapom." - ezt hogyan ellenőrizted? Több sebből vérzik az egész: "

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.