PHP Function in Function Problem

XooL

Lt. Junior Grade
Registriert
Sep. 2010
Beiträge
319
Hi,
ich weiß nicht weiter und auch nicht genau wonach ich suchen muss, damit ich eine Antwort finde: Ich habe 2 functions in PHP, die in einander geschachtelt sind. Die "Main"-Function (also die obere) möchte ich mehrfach ausführen, aber ich versteh einfach nicht warum es nicht geht :freak:


PHP:
<?
function first($a){

	function second($b){
		return 2 * $b;
	}
	$a = second($a)+$a;
	return $a;
}
echo first(2)."<br>";
echo first(2)."<br>";
echo "2. ".second(3)."<br>";
?>

Ergebnis:

Erwartetes Ergebnis:

Wenn ich die first-function einmal aufrufe und dann die second stimmen die Ergebnisse...

Ich bitte um Rat...
 
Fatal error: Cannot redeclare second() (previously declared in test.php:4) in test.php on line 4
-> du musst die Funktion second() auslagern,
 
<?php

function second($b){
return 2 * $b;
}

function first($a){

$a = second($a)+$a;
return $a;
}
echo first(2)."<br>";
echo first(2)."<br>";
echo "2. ".second(3)."<br>";
?>

und fertig ;)
 
PHP:
<?

    function second($b){
    return 2 * $b;
    }

    function first($a){
     
    $a = second($a)+$a;
    return $a;
    }
    echo first(2)."<br>";
    echo first(2)."<br>";
    echo "2. ".second(3)."<br>";
    ?>
So.
 
Hi,

Code:
<?
    function first($a)
{    
    $a = second($a)+$a;
    return $a;
}

function second($b)
{
    return 2 * $b;
}
    echo first(2)."<br>";
    echo first(2)."<br>";
    echo "2. ".second(3)."<br>";
    ?>

So mal probiert?

VG,
Mad
 
Klar... warum kompliziert wenns auch einfach geht... Danke
Wald vor lauter Bäumen... und so ;)
 
Seitdem sie (wie bei PHP natürlich wieder mal frickelig) anonyme Funktionen (und Closures) implementiert haben, kannst du die Funktionen aber auch verschachteln.
 
Warum das ganze nicht per PHP Klasse?

Beide Methoden dann z. B. public - je nach Anwendungsfall halt auch als statische Methoden.
Dann aber darauf achten, das innerhalb von Methoden auf weitere Methoden nicht per $this, sondern per self:: zugreift.
 
Zuletzt bearbeitet:
Zurück
Oben