kostenloser Webspace werbefrei: lima-city


"Function XY" Variablen ins Script übergeben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    a****r

    Hi Ihr,
    also wenn ich eine Funktion definiere und dort einige Dinge, rekursiv berechnen lasse und das ergebnis schlie?lich sp?ter im Script verwenden m?chte, muss ich den Inhalt der Variablen irgendwie an das Script ?bergeben.

    Leider wei? ich nicht wie...

    Mal ein Beispiel, wie ichs haben will.:

    $a=1;
    function mol ($a)
    { $b=$a+7; }
    echo "$b"; // $b ist aber nach der funktion nichtmehr definiert.


    Beitrag ge?ndert am 17.02.2006 21:48 von andifr
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du k?nntest mit "return ()" arbeiten. Das ist bei rekursiven Scripten aber nicht so angebracht.
    Da kannst du am Besten mit einer globalen Variable arbeiten.

    Z.B. :
    $a = 1;
    $b = false;
    
    function mol ( $a ) {
      gobal $b;
      $b = $a + 7;
    }
    print ( $b );
  4. Autor dieses Themas

    a****r

    Danke, f?r die schnelle Antwort.
    An return hab ich auchschon gedacht.
    Allerdings wird die funktion an der entsprechenden
    Stelle abgebrochen und das soll ja bei rekursiven nicht sein.

    Ich hab mich grad von meinem Script abgewand und besch?ftige mich jetzt damit einen Farbverlauf zu erzeugen. Mal schaun, obs was wird. Die Grafikfunktionen von Php sind teils ziemlich praktisch und interessant.

    Bye, Andi
  5. o**l

    Vielleicht suchst Du nach Referenzen (http://www.php.net/manual/de/language.references.php)?
  6. Autor dieses Themas

    a****r

    Ich habs grad ausprobiert. weder eine Refferenz noch eine Global war verwendbar. Hat jemand ne Ahnung, ob es m?glich ist, den ?bergabewert der jeweiligen Variablen, des jew. Arrys in einen Buffer zu schreiben und wie das geht?

    Ich hab mich grad schon mit den Bufferfunktionen auseinander gesetzt. Bitte vergebt mir, wenn ich mit 15 Jahren die Englischen Texte nochnicht ausreichend verstehe.

    => ?ber weitere L?sungswege w?rde ich mich sehr freuen.


    Getestete Varianten:

    function angriff ($a)
    	{
    		$a=rand(1, 10);
    		$a =& $GLOBALS["a"];
    	}
    	echo "$GLOBALS[a]";	
    	?>

    function &angriff ($a)
    	{
    		$a=rand(1, 10);
    		global $a;
    	}
    	echo "$GLOBALS[a]";	
    	?>

    $a =& $b;	
    	function angriff ($a)
    	{
    		$a=rand(1, 10);
    	}
    	echo "$a";	
    	?>
  7. Du kannst nicht den ?bergabewert der Funktion nachtr?glich global machen.

    Was du tun kannst, ist, eine globale Variable zu erzeugen -- ob mit global $variable oder $variable =& $GLOBALS["variable"] ist dabei egal.

    Kann man den bisherigen Quellcode der Funktion sehen? Ich bin mir sicher, dass es mit return() und ohne globale Variablen auch geht. Das ist meist einfacher zu realisieren und auch "sicherer" in der Programmierung -- weil keine Seiteneffekte auftreten.

    ?brigens ist das deutschsprachige PHP-Manual gr??tenteils auch in Deutsch verfasst:

    http://de.php.net/manual/de/
  8. Autor dieses Themas

    a****r

    Hier der Komplette Code:

    <?
    	function kampfbericht_generator ()
    	{		
    		$ak[1] = $_POST[\'ak1\'];
    		$ak[2] = $_POST[\'ak2\'];
    		$ak[3] = $_POST[\'ak3\'];
    		$ak[4] = $_POST[\'ak4\'];
    		$ak[5] = $_POST[\'ak5\'];
    		$ak[6] = $_POST[\'ak6\'];
    		$ak[7] = $_POST[\'ak7\'];
    		$ak[8] = $_POST[\'ak8\'];
    		$ak[9] = $_POST[\'ak9\'];
    		$ak[10] = $_POST[\'ak10\'];
    			
    		$vk[1] = $_POST[\'vk1\'];
    		$vk[2] = $_POST[\'vk2\'];
    		$vk[3] = $_POST[\'vk3\'];
    		$vk[4] = $_POST[\'vk4\'];
    		$vk[5] = $_POST[\'vk5\'];
    		$vk[6] = $_POST[\'vk6\'];
    		$vk[7] = $_POST[\'vk7\'];	
    		$vk[8] = $_POST[\'vk8\'];
    		$vk[9] = $_POST[\'vk9\'];
    		$vk[10] = $_POST[\'vk10\'];
    		
    		$angriff = array(2, 50, 121, 216, 338, 490, 675, 896, 1156, 1458, 1805);
    		$abwehr = array(2, 1000, 1771, 2766, 4138, 5490, 7625, 9896, 12606, 15758, 19455);
    		
    		$ak_angriff = 0;
    		$ak_abwehr = 0;
    		$vk_angriff = 0;
    		$vk_abwehr = 0;
    		
    		function st?rken ($ak, $vk, $angriff, $abwehr)
    		{
    			for ($count=0;$count!=10;$count++)
    			{
    				$ak_angriff[$count] = $ak_angriff[$count]+$ak_angriff[$count]*$angriff[$count];
    				$ak_abwehr[$count] = $ak_abwehr[$count]+$ak_abwehr[$count]*$abwehr[$count];
    				
    				$vk_angriff[$count] = $vk_angriff[$count]+$vk_angriff[$count]*$angriff[$count];
    				$vk_abwehr[$count] = $vk_abwehr[$count]+$vk_abwehr[$count]*$abwehr[$count];
    			}
    			
    			$ak_abwehr_rest = $ak_abwehr-$vk_angriff;
    			$vk_abwehr_rest = $vk_abwehr-$ak_angriff;
    			
    		}	
    	
    		
    		function reward ($ak, $vk, $ak_abwehr_rest, $vk_abwehr_rest)
    		{
    			for ($count=10;$count!=0;$count--)
    			{
    				$ak[$count] += $ak_abwehr_rest[$count]/$vk[$count];
    				$vk[$count] += $vk_abwehr_rest[$count]/$vk[$count];
    				
    				$ak_abwehr_rest[$count] += $ak[$count];
    				$vk_abwehr_rest[$count] += $ak[$count];
    				
    				echo \"Runde $runde\";
    				echo \"Verbleibende angreifende Schiffe $ak\";
    				echo \"Verbleibende verteidigende Schiffe $vk\";
    				
    				foreach ($ak as $sum)
    				{
    					$ak_sum = $ak_sum + $sum;
    				}
    				
    				
    				foreach ($vk as $sum)
    				{
    					$vk_sum = $vk_sum + $sum;
    				}
    				
    				if ($ak>>0) st?rken ($ak, $vk, $angriff, $abwehr);
    				elseif ($vk>>0) st?rken ($ak, $vk, $angriff, $abwehr);
    				
    			}
    		}
    	}
    	
    	
    		?>
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!