Ik kom er niet uit, ben een echte leek maar waar gaat het fout.
Ik heb een phpscript deze komt op verschillende pagina's voor dus netjes als ik ben wil ik hier een function van maken.


<?php

$xpos="501";
$ypos="500";
$level="6";

function findvillage() 
{
	global $xpos, $ypos, $level;
	$dorp = fopen('http://#####/dorp.txt', "r");
	$row = 1;
		while (($fdorpsnaam = fgetcsv($dorp, 1000, ",")) !== FALSE) 
		{
			$row++;  
			if ($fdorpsnaam[2] == $xpos && $fdorpsnaam[3] == $ypos) 
			{
			$rdorpsnaam = str_replace("+"," ",$fdorpsnaam[1]);
                        echo ($rdorpsnaam."); //HIER WERKT HET WEL
			return $rdorpsnaam;
			}
		}
	fclose($dorp);
}

findvillage();
echo ($rdorpsnaam."); //HIER WERKT HET NIET
?>


Waar gaat het fout met deze functie? waarom kan ik zolang ik wel binnen de functie zit de waardes aanroepen maar zodra ik buiten de functie zit zijn deze waardes weg.
Ik heb gezocht op verschillende sites en kom er na een dag zoeken echt niet uit.

Al naar de kleurcode gekeken :?
Lijn 18 is niet helemaal jofel.
Met een return komt de waarde uit de aanroep rollen. Het wordt geen global variabele. IK zou me eens gaan verdiepen in input en output van een functie.

Zonder gebruik van globals.


<?php

function findvillage($X, $Y) {

    $dorp = fopen('http://#####/dorp.txt', "r");
    $row = 1;
        while (($fdorpsnaam = fgetcsv($dorp, 1000, ",")) !== FALSE) {
            $row++;  
            if ($fdorpsnaam[2] == $X && $fdorpsnaam[3] == $Y) {
            	$rdorpsnaam = str_replace("+"," ",$fdorpsnaam[1]);
				return $rdorpsnaam;
            }
        }
    fclose($dorp);
}

$dorp = findvillage("501","500");
echo $dorp; 
?> 
<?php
echo $rdorpsnaam;
?>

edit:

Je moet het bestand wel sluiten voor de return:
<?php
function findvillage($X, $Y, $l) {

$dorp = fopen('http://#####/dorp.txt', "r");
$row = 1;
while (($fdorpsnaam = fgetcsv($dorp, 1000, ",")) !== FALSE) {
$row++;
if ($fdorpsnaam[2] == $X && $fdorpsnaam[3] == $Y) {
$rdorpsnaam = str_replace("+"," ",$fdorpsnaam[1]);
fclose($dorp);
return $rdorpsnaam;
}
}
fclose($dorp);
}
?>

Reageren