7924 Posted November 3, 2007 Report 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?
Vebers Posted November 3, 2007 Report 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
7924 Posted November 3, 2007 Author Report Posted November 3, 2007 ja, bet vai tad Tava piemērā pēc return funkcijas darbība netiks pārtraukta pie $mansmainigais[0]?
Vebers Posted November 3, 2007 Report 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...
7924 Posted November 3, 2007 Author Report 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
Vebers Posted November 3, 2007 Report 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
7924 Posted November 3, 2007 Author Report 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
Vebers Posted November 3, 2007 Report 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.. ;)
Recommended Posts