7924 Posted November 3, 2007 Report Share Posted November 3, 2007 Tātad mans kods vispārīgi izskatās šādi $i=0; manafunkcija($vertiba, $i); function manafunkcija($a, $b){ te viskaut kas notiek ar datubāzēm, utt mansmainigais[$i]=no datubāzes iegūtā vērtība; apaksfunkcija($t, $i); } function apaksfunkcija($a, $i){ $i++; manafunkcija($a, $i); } Rezultātā man vajag beigās iegūt mainīgos ārpus funkcijām mansmainigais[0]; mansmainigais[1]; mansmainigais[2]; utt mansmainigais[n] kādā veidā tas notiek? Kurā vietā man likt to return un kādā veidā? Lieta tāda, kas caur funkciju tos mainīgos pa tiešu negribu uz ekrāna parādīt, es gribu pēc tam ar FOR ciklu pretējā kārtībā parādīt, bet tas jau būs ārā no funkcijas: mansmainigais[n]; mansmainigais[2]; mansmainigais[1]; mansmainigais[0]. Kā tas darāms? Link to comment Share on other sites More sharing options...
Vebers Posted November 3, 2007 Report Share Posted November 3, 2007 function manafunkcija($a, $b){ te viskaut kas notiek ar datubāzēm, utt $mansmainigais[$i]=no datubāzes iegūtā vērtība; apaksfunkcija($t, $i); return $mansmainigais; } http://lv.php.net/return Link to comment Share on other sites More sharing options...
7924 Posted November 3, 2007 Author Report Share Posted November 3, 2007 ja, bet vai tad Tava piemērā pēc return funkcijas darbība netiks pārtraukta pie $mansmainigais[0]? Link to comment Share on other sites More sharing options...
Vebers Posted November 3, 2007 Report Share Posted November 3, 2007 Nē, jo tiek pirms return izsaukta apaksfunkcija() - tava piemera apaksfunkcija turpina ciklu, ja return tiktu izsaukts pirms apakshfunkcija(), tad tiktu atgriezts $mansmainigais[0] un cikls nemaz neturpinātos. Palasi to linku kuru jau iepriekš iepostēju... Link to comment Share on other sites More sharing options...
7924 Posted November 3, 2007 Author Report Share Posted November 3, 2007 (edited) ok, bet kāpēc tad pēc funkcijas man rāda ka $mansmainigais neko nsatur? Ieksa funkcija, kad ielieku echo $mansmainigais[$i]; vins visu izvada. Iespējams, ka man tiešām rūpīgāk jāizlasa par "return" iekš php.net! Edited November 3, 2007 by 7924 Link to comment Share on other sites More sharing options...
Vebers Posted November 3, 2007 Report Share Posted November 3, 2007 Tapēc ka $mainigais nav globāls mainīgais. Pamēģini šādi: <?php $i=0; $content = array(); $content[] = manafunkcija($vertiba, $i); function manafunkcija($a, $b){ //te viskaut kas notiek ar datubāzēm, utt apaksfunkcija($t, $b); return $b; } function apaksfunkcija($a, $i){ global $content; $i++; if($i < 10) { $content[] = manafunkcija($a, $i); } } var_dump($content); ?> Par globālajiem mainīgajiem vari palasīt seit: http://php.net/global Link to comment Share on other sites More sharing options...
7924 Posted November 3, 2007 Author Report Share Posted November 3, 2007 (edited) sakuma ieliku $content = array(); un manafunkcija() sakuma ieliku šo mainīgo kā GLOBAL un viss strādā. Zināju par to GLOBAL, bet neiedomājos par so $content = array()- likās, ka mainīgais autimātiski ir masīvs! Paldies, viss strādā! Edited November 3, 2007 by 7924 Link to comment Share on other sites More sharing options...
Vebers Posted November 3, 2007 Report Share Posted November 3, 2007 likās, ka mainīgais autimātiski ir masīvs! Mainīgais ir arī "automātiski masīvs", bet performace labad ir velams to iepriekš definēt kā masīvu. Tāpar arī $i++ vietā iesaku izmantot ++$i. Katra milisekunde ir svarīga.. ;) Link to comment Share on other sites More sharing options...
Recommended Posts