Globale Variable/Literal verflüchtigt sich...

Mik3e

Erfahrenes Mitglied
Hi,

Habe ein mysteriöses Problem.
Es gibt einen Array $places, der an die Methode einer Klasse übergeben wird. Diese Methode ruft wiederum eine andere auf.. in der aufgerufenen Methode ist die Variable = NULL...

Hier ein Beispiel (der Wert von $places[0][0] wird zur besseren verdeutlichung hier explizit nochmals gestezt):

PHP:
class bestplatzcalculation
{
	function searchPlaces($places) { 
		$places[0][0]=true;
		echo 'PLATZ 0/0: '.$places[0][0].'<br>'; // => LIEFERT 1 (true)
		$this->checkPlaces(); 
	} 

function checkPlaces() { 
    	global $places;
		echo 'PLATZ 0/0: '.$places[0][0].'<br>'; // => LIEFERT NULL
	} 
}
Als Parameterübergabe möchte ich das Problem auch nicht lösen (das hier ist nur ein kleiner Ausschnitt des Codes)..

Hat irgendwer eine Idee

LG
Mike
 
Hi,

in dem Fall würde ich $places gleich als globale Variable anlegen und nicht als Parameter an searchPlaces übergeben (so wie Du es jetzt machst, ist $places ja lokal).

Vielleicht hilft auch schon ein global $places; in searchPlaces, aber besonders übersichtlich wäre das nicht.

Gruß
.
 
Das geht leider nicht, da der Grundlplan ein eigenes Objekt ist und in einer anderen Klasse generiert wird (da die Daten natürlich aus eine DB kommen)..
Das Array passt auch.. alles perfekt.. Nur die mit der deklaration als global gibts probleme..
Ich grübel wirklich schon seit 2 stunden rum und komm nicht dahinter..
Hat denn niemand eine Idee wo das Problem liegen könnte

LG
Mike

P.S: @Datic: Danke für die Berechnung, die verwende ich jetzt :)
 
Ich versteh zwar nicht worauf du hinauswillst aber versuchs mal so ähnlich:
PHP:
class bestplatzcalculation {
    
	var $places;
	
	function searchPlaces($places) {
		$this->places = $places;
        $this->places[0][0]=true;
        echo 'PLATZ 0/0: '.$this->places[0][0].'<br>'; // => LIEFERT 1 (true)
        $this->checkPlaces();
    }

    function checkPlaces() {
        echo 'PLATZ 0/0: '.$this->places[0][0].'<br>'; // => LIEFERT 1 (true)
    }

}
greetz
daddz
 
Zurück