Richard: Invalid argument supplied for foreach()

Beitrag lesen

Hallo,

ich programmieren gerade ein einfaches threadbasiertes Forum. Ich habe bis jetzt nur testweise eine Klasse Thread, deren Methode drawThread() die Threadstruktur "zeichnet". Das funktioniert soweit auch alles wunderbar, nur bekomme ich nach jedem Posting die im Titel angegebene Warnung "Warning: Invalid argument supplied for foreach() in C:\web\Apache2\htdocs\OOP\class.php on line 11".

Hier erstmal der Code der Klasse:

  
final class Thread {  
  
    private $marginUnit = 20;  
  
    public function drawThread( $posting, $mid ) {  
  
            $margin = $this->getMargin( $mid );  
            echo "<span style=\"margin-left:$margin" . "px" . "\">" . $posting . "</span>";  
            /* HIER KOMMT DIE WARNUNG */foreach( $this->getChildren( $mid ) as $child ) {  
                $this->drawThread( $child );  
            }  
  
    }  
  
    public function getPostings() {  
        return array(  
            "20060715t1m1rel0" => "Ausgangsposting",  
            "20060715t1m2rel1m1" => "Erste Antwort auf das Ausgangsposting",  
            "20060715t1m3rel1m1" => "Zweite Antwort auf das OP",  
            "20060715t1m4rel2m3" => "Antwort auf Zweite Antwort"  
        );  
    }  
  
    private function getChildren( $mid ) {  
        $children = array();  
        $RE_getMessageRelation = "/[0-9]{8}t[0-9]+m([0-9])+rel[0-9]+m[0-9]+/";  
        $RE_getRelated = "/[0-9]{8}t[0-9]+m[0-9]+rel[0-9]+m([0-9])+/";  
        preg_match( $RE_getMessageRelation, $mid, $messageNumber );  
        foreach( $this->getPostings() as $mid => $posting ) {  
            preg_match( $RE_getRelated, $mid, $relationNumber );  
            if( ( $relationNumber && $messageNumber ) ) {  
                if( $relationNumber[1] == $messageNumber[1] ) {  
                    $children[$mid] = $posting;  
                }  
            }  
        }  
    }  
  
    private function getMargin( $mid ) {  
        $RE_getRelation = "/[0-9]{8}t[0-9]+m[0-9]+rel([0-9]+)m[0-9]+/";  
        preg_match( $RE_getRelation, $mid, $relation );  
        if( $relation ) {  
            return $relation[1] * $this->marginUnit;  
        } else {  
            return 0;  
        }  
    }  
  
}  
  
$thread = new Thread();  
  
$postings = $thread->getPostings();  
foreach( $postings as $mid => $posting ) {  
    $thread->drawThread( $posting, $mid );  
}  

Entschuldigt, dass ich euch einen solchen Batzen vor den Kopf knalle, aber da hier jeden Methode mit jeder verstrickt ist, wusste ich mir nicht anders zu helfen.

An der markierten Stelle erscheint die Warnung, und ich weiß nicht, warum. Es wäre sehr nett, wenn sich jemand die Mühe macht und sich da reindenkt.

Vielen Dank!

Beste Grüße