Jump to content
php.lv forumi

rekursija un return


Blitz

Recommended Posts

tatad kods ir seit kods...

 

problema taada...

cik manuali lasiju tad return partrauc funkcijas izspildi un uzreiz atgirez vertibu. Vot lieta tada ka vajadzetu lai funkcija izspildaas visa un tikai tad atgriez vertibu, jo iznak ka funkcija nepaspej savakt visus file name...

 

Kaa varetu panaak lai pa prieksu izspildaas visa funkcija un rekursija, un tikai peec tam RETURN.

Link to comment
Share on other sites

tur jau taa lieta ka neizpildaas...

piemerem ja return vietaa ielieku print_r($filename), tad izbirst apm 16000 faili (taakaa vajag) bet ja peec funkcijas lieku $flist=traverse_dir($dir) tad labi ja kadi 50 faili, tip izskatas ka izgajis butu cauri tikai vienreiz vienam herarhijas limenim un viss...

Link to comment
Share on other sites

Nu ko tu man te muķības stāsti. Return izpildās tad, kad tev kodā uzlikts - pēc visa pārējā funkcijas koda beigām. Un tas, ka to tu vaino tamdēļ ka kods nestrādā, nav return vaina. Bet tavis rakstītā koda vaina.

 

Padomā pats: ko return dara? Atgriež funkcijas vērtību. Paskaties tad nu kā tu to vērtību izmanto #34 rindiņā..! Nekā! Tu to vērtību vienkārši aizmirsti.

 

Tā ka nevaino return.

Link to comment
Share on other sites

arrrgh....

 

kaa jau ieprieks rakstiju....

 

Ja return vietaa ielieku print_r($filename) tad man izdrukaa masivu ar 16000 ierakstu...

Ja atstaju return($filename) un peec tam izsaucu funkciju saadi:

$masivs=traverse_dir($dir);

print_r($masivs);

 

tad izdrukaa 77 ierakstus, kur tad taadaa gadijumaa paliek parejie?

peec visa secinot, tomer vins man neatgriez visu $filename masivu...

 

Pasaki kuraa vietaa es esu tik stulbs ka nesaprotu....

Link to comment
Share on other sites

Es jau teicu:

Padomā pats: ko return dara? Atgriež funkcijas vērtību. Paskaties tad nu kā tu to vērtību izmanto #34 rindiņā..! Nekā! Tu to vērtību vienkārši aizmirsti.

Tu neizmanto funkcijas atgriežamo vērtību #34 rindiņā. Tur jau tas print_r kautko izdara - izdrukā uz ekrāna, a to atgriež no tās funkcijas (tas ir tas pats ko izdrukā) tu nekur neizmanto.

 

Pie tam:

Ja return vietaa ielieku print_r($filename) tad man izdrukaa masivu ar 16000 ierakstu...

Nevis masīvu bet masīvus (daudzskaitlī). Varbūt tas kautko līdzēs saprast ;)

Edited by bubu
Link to comment
Share on other sites

Skaidrs, man tur veidojas vairaki masivi, tatad ar return es izsaucu laikam pedejo no viniem...

 

Ka lai dabuju ara vinus visus? Kaut kas lidzigs $mas[]=$mas[]+$filename nelidzes?

Vai tiesam vienigaa izeja ir kramet vinus visus ieksaa kaut kadaa failaa vai temp datu baazee un pec tam veikt operacijas?

Edited by Blitz
Link to comment
Share on other sites

$masiv1='x';

$masivs_n='y';

echo $masivs1.'-'.$masivs_n; // izvadiis x-y

function bla(&$a,&$b)

{

$a='1';

$b='2';

}

bla($masivs1, $masivs_n);

echo $masivs1.'-'.$masivs_n; // izvadiis 1-2 nevis x-y

-----------

secinaajumus izdari pats.............

Link to comment
Share on other sites

×
×
  • Create New...