php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.09.2008, 17:11  
Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 62
braschi befindet sich auf einem aufstrebenden Ast
Standard Recursive depency

Hallo liebe Gemeinde, ich habe ein Problem.

Habe mich an ein script versucht was Sport-Turniere organisieren kann. Leider hängt es bei mir schon ziemlich früh, nälich an der anzeige der generierten Spieltage. Da bekomme ich folgenden Fehler:

Fatal error: Nesting level too deep - recursive dependency? in /usr/export/www/vhosts/funnetwork/hosting/dfbligamanager/teamclass.php on line 35

PHP-Code:
<?php
class Team
{
var
  
$name;
var  
  
$played false;
var  
  
$gegner = array();
  
}
$anzteams=0;
$teams = array();
foreach( 
$_POST["teams"] as $team)
{
    
$newteam = new Team();
    
$newteam->name $team;
    
$teams[] = $newteam;
    
}
$anzteams count($teams);


shuffle  ($teams);

for (
$tag $tag $anzteams$tag++){
  
   echo
'Datum: <input type="text" name="datum$tag"><br>';
   echo 
"<u>Spieltag $tag</u>";
    echo 
"<br><br>";
    for (
$t1 $t1 $anzteams$t1++){
    if(!
$teams[$t1]->played){
        
$team1 $teams[$t1];
        for (
$t2 $t1+$t2 $anzteams $t2++){
        if (!
$teams[$t2]->played && !in_array ($team1,$teams[$t2]->gegner)){
        
$team2 $teams[$t2];
        
$teams[$t2]->played true;
        
$teams[$t2]->gegner[] = $teams[$t1];
        
$teams[$t1]->played true;
        
$teams[$t1]->gegner[] = $teams[$t2];
        
        echo 
"$team1->name - $team2->name";
        echo
"<br>";
        
$t2=$anzteams;
        echo
"<br>";
        };
        
        };
     
    };
        
    };


    for (
$z $z $anzteams$z++){
    
$teams[$z]->played false;

    }
};
?>

Leider weiß ich nicht wieso der Fehler auftritt und was der besagt, und kann ihn somit auch nicht beheben!

Vielleicht könnt ihr mir ja helfen!
braschi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.09.2008, 18:22  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 387
MrNiceGuy befindet sich auf einem aufstrebenden Ast
Standard

Laut Handbuch ist der erste Parameter von in_array() entweder ein String oder ein Array: PHP: in_array - Manual

Dementsprechend wird er folgende Zeile (die im Übrigen Zeile 35 ist) nicht ausführen können:

PHP-Code:
if (!$teams[$t2]->played && !in_array ($team1,$teams[$t2]->gegner)){ 
</SPAN>

Ich würde daher den folgenden Code eher verwenden:

PHP-Code:
        if (!$teams[$t2]->played && !array_key_exists ($team1->name,$teams[$t2]->gegner)){
        
$team2 $teams[$t2];
        
$teams[$t2]->played true;
        
$teams[$t2]->gegner[] = $teams[$t1]->name;
        
$teams[$t1]->played true;
        
$teams[$t1]->gegner[] = $teams[$t2]->name;
        
        echo 
"$team1->name - $team2->name";
        echo
"<br>";
        
$t2=$anzteams;
        echo
"<br>";
        }; 


Dann sollte es funktionieren.
MrNiceGuy ist offline  
Alt 28.09.2008, 18:45  
Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 62
braschi befindet sich auf einem aufstrebenden Ast
Standard

ja wunderbar nun funktioniert es. vielen dank! habe das im manual wohl überlesen.

P.s. wieder was dazu gelernt
braschi ist offline  
Alt 28.09.2008, 20:23  
Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 62
braschi befindet sich auf einem aufstrebenden Ast
Standard

Problem doch nicht gelöst....
folgenden Fehler gibt es nun

Warning: array_key_exists() [function.array-key-exists]: The first argument should be either a string or an integer in C:\xampp\htdocs\dfb\teamclass.php on line 35

Mein erstes argument ist aber kein string oder int. aber in der php manual steht auch das das erste argument ein mixed ist. das heißt doch auch das es ein array nimmt oder nicht?

Geändert von braschi (28.09.2008 um 20:30 Uhr).
braschi ist offline  
Alt 28.09.2008, 20:56  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

nein. mixed heißt nur, dass der Parameter verschiedene Typen annimmt. Nicht zwingend aber alle. DU kannst array_diff benutzen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 28.09.2008, 21:03  
Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 62
braschi befindet sich auf einem aufstrebenden Ast
Standard

okay array_diff klingt im manual schon ma gut^^

aber wie komm eich denn jetzt auf mein heimteam ($team1) wenn beide argumente ein array sein sollen?
braschi ist offline  
Alt 28.09.2008, 21:06  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Warum habe ich das wohl gerade geschrieben?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 28.09.2008, 21:12  
Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 62
braschi befindet sich auf einem aufstrebenden Ast
Standard

ich glaube wir reden an einander vorbei.

mein heimteam muss sozusagen festgelegt mit dem schleifensurchlauf werden und das gegnerteam muss aus einem array gesucht werden!
braschi ist offline  
Alt 28.09.2008, 21:57  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 387
MrNiceGuy befindet sich auf einem aufstrebenden Ast
Standard

Wenn du nur den Namen nutzt, wie ich es in meinem Beispiel geschrieben habe, dann dürfte es nicht zu diesem Fehler kommen, den du da beschrieben hast!?
MrNiceGuy ist offline  
Alt 28.09.2008, 22:03  
Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 62
braschi befindet sich auf einem aufstrebenden Ast
Standard

Okay sry hab was übersehn bei deinem bsp.

es funktioniert aber noch nicht richtig. bei 6 teams macht er es bis zum 4. spieltag richtig und am 5. und 6. spieltag gibt es nur noch 2 begegnungen pro spieltag obwohl es 3 sein müssten!!!
braschi ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum