PHP: Include einer Funktion in einer Schleife

Man braucht es nicht wirklich oft, aber wenn man es braucht, denkt man nicht dran.
Ich musste heute eine Funktion aus einer anderen PHP-Datei in eine ebstehende includen.

Normalerweise kein problem:

1
2
3
4
<?
include("anderedatei.php");
echo funktionausandererdatei();
?>

Blöd ist das allerings wennd as jetzt in einer Schleife passiert.

Als beispiel hab ich hier mal eine Datei (include.php) mit einer Funktion, welche einfach nur eine Zahl + 1 addiert:

1
2
3
4
5
6
7
<?
// funktion zum includen
function add($var)
{
	return $var+1;
}
?>

Und eine Schleife:

1
2
3
4
5
6
7
<?
for($i=0;$i<=10;$i++)
{
	include("include.php");
	echo "$i | ".add($i)."<br>";
}
?>

Würde man das so laufen lassen, würde man diese ausgabe bekommen:

0 | 1

Fatal error: Cannot redeclare add() (previously declared in /srv/apache/htdocs/test/include.php:5) in /srv/apache/htdocs/tat_zusammen/htdocs/test/include.php on line 8

Ist klar, weil is schon eingebunden.
Abhilfe schafft hier statt inlude() ein include_once().

Sieht dann so aus:

1
2
3
4
5
6
7
<?
for($i=0;$i<=10;$i++)
{
	include_once("include.php");
	echo "$i | ".add($i)."<br>";
}
?>

Und hat dann als ausgabe:

0 | 1
1 | 2
2 | 3
3 | 4
4 | 5
5 | 6
6 | 7
7 | 8
8 | 9
9 | 10
10 | 11

Und alles ist bestens 🙂

leave your comment

*

Unterstütze den Frickelblog!