Pereiti prie turinio

[PHP] Ciklas nuosavoje funkcijoje


Rekomenduojami pranešimai

Sveiki,

 

susidūriau su keista problema, bandau klasėje parašyt pačią paprasčiausią funkciją.

 

Iš mysql duom. bazės paimti tris paskutinius įrašus ir išvesti į ekraną.

 

<?php

class own_class
{
public function loop 
{
	// Query
	$qr = mysql_query ( 'SELECT `song_name` FROM `songs` ORDER BY `uid` DESC LIMIT 3' );

	// Loop
	while ( $res = mysql_fetch_assoc ( $qr ) )
	{
		return $res [ 'song_name' ] . '<br/>';
	}

}
}

?>

 

Viskas atrodo, kaip ir gerai, bet į ekraną išvedama vietoj trijų rezultatų, tik vieną.

 

Gal kam tekę susidurt, kas čia per velnias? :huh:

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kai iškviečiama f-ja return, tai yra sustabdoma pati funkcija, nes laikoma jog ji jau baigė savo darbą ir turi atiduoti rezultatą. Šiuo atveju tau reikėtų sugeneruoti arba naują masyvą ir jį „returninti“, arba tiesiog naudoti print/echo.

T.Y.

function xxx(){
return 'a' //Toliau nevykdoma
print 'a'
}
function yyy(){
$vienas_kartas=TRUE
while($vienas_kartas){
$vienas_kartas=FALSE
return 'a' //išves tik vieną a.
}//Šita vieta nebus pasiekta
print 'a'
}

Redagavo nagisa
Nuoroda į pranešimą
Dalintis kituose puslapiuose
// Class/library failas
class own_class
{
public function loop()
{
	// Query
	$query = mysql_query('SELECT `song_name` FROM `songs` ORDER BY `uid` DESC LIMIT 3');

	// Loop
	$songs = array();
	while ($row = mysql_fetch_assoc($query))
	{
		array_push($songs, $row['song_name']);
	}

	return $songs;
}
}


// Controller failas (jeigu toki turi)
$obj = new own_class;
$songs = $obj->loop();



// View failas
if (!empty($songs) && is_array($songs))
{
foreach ($songs as $song)
{
	echo $song . '<br/>';
}
}

Redagavo alter
Nuoroda į pranešimą
Dalintis kituose puslapiuose

$songs = array();

while ($row = mysql_fetch_assoc($query))

{

array_push($result, $row['song_name']);

}

 

return $songs;

 

 

Reiktų pataisyt į:

 

 

$songs = array();

while ($row = mysql_fetch_assoc($query))

{

array_push($songs, $row['song_name']);

}

return $songs;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

kam tas array push ?

 

// Class/library failas
class own_class
{
       public function loop()
       {
               // Query
               $query = mysql_query('SELECT `song_name` FROM `songs` ORDER BY `uid` DESC LIMIT 3');

               while ($row = mysql_fetch_assoc($query))
               {
                       $songs[] = $row['song_name'];
               }

               return $songs;
       }
}

 

Beto butu logiskiau ta "3" prisiskirt kintamajam nes drug reiks isvest 5 rezultatus.

Redagavo ecash
Nuoroda į pranešimą
Dalintis kituose puslapiuose
kam tas array push ?
aš naudočiau tavo parašytą variantą, tačiau ši funkcija padaro lygiai tą patį. Tai manau jokio skirtumo. Kas labiau prie širdies, tą ir vartoji.

 

Edit: tačiau prieš while tavo kode nurodyčiau $songs = array();

Redagavo NoExitHere
Nuoroda į pranešimą
Dalintis kituose puslapiuose

aš naudočiau tavo parašytą variantą, tačiau ši funkcija padaro lygiai tą patį. Tai manau jokio skirtumo. Kas labiau prie širdies, tą ir vartoji.

 

Edit: tačiau prieš while tavo kode nurodyčiau $songs = array();

 

ecash teisus dėl $songs[], idomumo dėlei pažiūrėjau array_push() dokumentaciją ir ten pataria naudot $array[] jeigu pridedamas tik vienas masyvo elementas.

 

O dėl $songs = array(); pritariu :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

return užbaigia funkcija ir išveda pirmąjį rezultatą.

 

	$line = "";

               while ( $res = mysql_fetch_assoc ( $qr ) )
               {
                      $line .= $res [ 'song_name' ] . '<br/>';
               }
	return $line;

 

Dabar man paaiškink ką daro tas taškas prieš = (.=)?

 

Nes buvau bandęs tokį variantą, tik be taško, ir man grąžino tik vieną variantą, o su tašku viskas tvarkoj. :blink:

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dabar man paaiškink ką daro tas taškas prieš = (.=)?

 

Nes buvau bandęs tokį variantą, tik be taško, ir man grąžino tik vieną variantą, o su tašku viskas tvarkoj. :blink:

 

$var .= 'value';

 

tas pats kas ir

 

$var = $var . 'value';

 

O taškas kaip žinoma sujungia.

Redagavo Roms
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...