2017-05-18 14 views
-3

Entschuldigung für die Frage. Ich habe die ersten Schritte in OOP gemacht und ich verstehe nicht, warum Funktion 'display' nicht über die Funktion 'create' weiß.PHP OOP-Array 'Undefinierte Variable'

Hier ist mein Code:

<?php 
class SimpleClass 
{ 
    public $i, $j; 
    public $tab = Array(); 

    public function create() 
    { 
     for($i=0; $i<5; $i++) 
      for($j=0; $j<5; $j++) 
       $tab[$i][$j] = $i+$j;  
    } 

    public function display() 
    { 

     for($i=0; $i<5; $i++) 
      for($j=0; $j<5; $j++) 
       echo $tab[$i][$j]." "; 
    } 
} 
    $test = new SimpleClass(); 
    $test->create(); 
    $test->display(); 
?> 

Bitte, erklären $ dieses für mich.

+0

Wenn Sie Objekt-Scope-Variablen referenzieren, sollten Sie '$ this-> tab' anstatt nur' $ tab' verwenden. – castis

+0

http://php.net/manual/en/language.oop5.basic.php – AbraCadaver

Antwort

0

Sie vermissen die $ this Schlüsselwort.

<?php 
class SimpleClass 
{ 
    public $i, $j; 
    public $tab = Array(); 

    public function create() 
    { 
     for($i=0; $i<5; $i++) 
      for($j=0; $j<5; $j++) 
       $this->tab[$i][$j] = $i+$j;  
    } 

    public function display() 
    { 

     for($i=0; $i<5; $i++) 
      for($j=0; $j<5; $j++) 
       echo $this->tab[$i][$j]." "; 
    } 
} 
    $test = new SimpleClass(); 
    $test->create(); 
    $test->display(); 
?> 
+0

Ist es so einfach? Ich liebe euch Jungs! – Hubert

+0

Großartig. Möchten Sie die Antworten verbessern, die Sie hilfreich finden? Vielen Dank. – waterloomatt

+0

Es war sogar in der Frage! _Bitte erklären Sie mir $. – AbraCadaver

0

Funktionen display() weiß eigentlich über Funktion create(). Sie sind jedoch beide Mitgliedsfunktionen von class SimpleClass. Da sie Mitgliedfunktionen sind, ist ihr Bereich auf die Klasse beschränkt.

Um create() von display() explizit aufzurufen, verwenden Sie $this->create(). $this ist ein Schlüsselwort in PHP (und vielen anderen Sprachen), das sagt "die Klasse, zu der ich gehöre".