PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   was mach ich falsch? spielplan-matrix (https://www.php-resource.de/forum/php-developer-forum/63304-was-mach-ich-falsch-spielplan-matrix.html)

snx 14-12-2005 11:59

was mach ich falsch? spielplan-matrix
 
hallo zusammen, ich will kurz erklären worum es geht.

ich habe eine online liga für pes5 erstellt und habe in meiner datenbank eine tabelle mit allen teams.

um ein jeder gegen jeden dort auszulesen reicht ein einfacher sql befehl, was auch kein problem ist.

ich möchte allerdings auch eine einteilung nach spieltagen haben und habe dazu folgende seite gefunden:

http://www.stefan-taube.de/liga.htm

der vereinfachte quelltext ist in c# und er funktioniert einwandfrei, ich habe ihn sogar schon etwas übersichtlicher gestalltet um ihn besser in php umschreiben zu können:

PHP-Code:

using System;
class 
LigaAlgorithmus
{
    
// st[i,j] ist der Spieltag an dem i gegen j spielt.
    
static void Calc(int Teams)
    {
        
int i 0;
        
int j 0;
        
int a 0;
        
int b 0;
        
int Spieltag 0;
        
int Spieltage 0;
        
int [,] Spiel = new int[Teams 1Teams 1];
        
        if (
Teams == 0)
            
Spieltage Teams 1;
        else
            
Spieltage Teams;
        
        for(
<= Spieltagei++)
        {
            
Spieltag++;
            
1;
            
i;
            for(
1<= Spieltagej++)
            {
                if (
bSpiel[ab] = Spieltag;
                
a++;
                
b--;
                if (
1Spieltage;
            }
        }

        if (
Spieltage Teams)
            for (
1Teamsi++)
                if (
== 1)
                    
Spiel[iTeams] = 1;
                else
                    
Spiel[iTeams] = Spiel[1i] + 1;

        for (
1<= Teamsi++)
            for (
1ij++)
                
Spiel[ij] = Spiel[ji] + Spieltage;

        for (
1<= Teamsi++)
        {
            for (
1<= Teamsj++)
                
Console.Write(" " Spiel[ij].ToString());
            
Console.WriteLine();
        }

        
Console.ReadLine();
    }
    [
STAThread]
    static 
void Main(string[] args)
    {
        
Calc(4);
    }


So, in PHP umgesetzt sieht das für mich so aus:

PHP-Code:

$Teams 4;

$i 0;
$j 0;
$a 0;
$b 0;
$Spieltag 0;

if (
$Teams == 0)
    
$Spieltage $Teams 1;
else
    
$Spieltage $Teams;
    
$Spiel = array();
for (
$i 0$i <= $Teams$i++)
    for (
$j 0$j <= $Teams$j++)
        
$Spiel[$i][$j] = 0;
    
for(
$i $i <= $Spieltage$i++)
{
    
$Spieltag++;
    
$a 1;
    
$b i;
    for(
$j 1$j <= $Spieltage$j++)
    {
        if (
$a $b$Spiel[$a][$b] = $Spieltag;
        
$a++;
        
$b--;
        if (
$b 1$b $Spieltage;
    }
}
if (
$Spieltage $Teams)
    for (
$i 1$i $Teams$i++)
        if (
$i == 1)
            
$Spiel[$i][$Teams] = 1;
        else
            
$SPiel[$i][$Teams] = $Spiel[$i 1][$i] + 1;
        
for (
$i 1$i <= $Teams$i++)
    for (
$j 1$j $i$j++)
        
$Spiel[$i][$j] = $Spiel[$j][$i] + $Spieltage;

for (
$i 1$i <= $Teams$i++)
{
    for (
$j 1$j <= $Teams$j++)
        echo 
' ' $Spiel[$i][$j];
    echo 
'<br>';


Nur das Problem an der ganzen Sache ist, das die Ausgaben leider völlig unterschiedlich sind, was ich nicht ganz verstehe...

Code:

C# Ausgabe:

 0 2 3 1
 5 0 1 3
 6 4 0 2
 4 6 5 0

Code:

PHP Ausgabe:

 0 0 0 1
 3 0 3 0
 3 6 0 0
 4 3 3 0

Also, wie bereits erwähnt ist die C#-Ausgabe korrekt; sie gibt mir an an welchem Spieltag das jeweilige Spiel (x - y oder i - j) statt findet...

da es ja logisch funktioniert muss es ja eigentlich an der übersetzung in php scheitern... evt. an der art der verwendung des arrays? ich bin verzweifelt und ratlos...

Kann mir das jemand erklären, hab ich was übersehen?


Hilfe!

Gruß, snx

snx 14-12-2005 12:41

danke, aber es hat sich erledigt... :-/

nach 3 stunden erfolgloser suche und überlegen postet man was und ein paar minuten darauf sieht man alles...

also sorry für den post.


falls es jemanden interessiert woran es lag:

$b = i;

statt

$b = $i;

hat schon vertale folgen...
wenn man dazu noch einmal

SPiel[...]

statt

Spiel[...]

benutzt sollte man sich über fehler nicht wundern...
das is halt der nachteil an php, wie ich finde... er akzeptiert alles und meckert nie... :-/

naja, bis dahin

wahsaga 14-12-2005 13:27

Zitat:

Original geschrieben von snx
das is halt der nachteil an php, wie ich finde... er akzeptiert alles und meckert nie... :-/
PHP äußert sich sehr detailiert zu deinen Fehlern - du musst es ihm nur erlauben.
http://www.php.net/manual/de/ref.errorfunc.php

snx 14-12-2005 15:04

ähm, ok, aber ich meinte ja auch keine direkten fehler.

sondern eben das falsche aus meinem programm:

wenn man SPiel statt Spiel schreibt ist es ja kein direkter Fehler, es sind halt 2 unterscheidliche Variablen und mit meiner äußerung meinte ich:

es ist zwar schön das man variablen nciht immer extra deklarieren muss, aber solche sachen würden dann nicht auftreten.

oder kann ich ihm die deklarierung auch als muss bei bringen?

wahsaga 14-12-2005 15:09

Zitat:

Original geschrieben von snx
wenn man SPiel statt Spiel schreibt ist es ja kein direkter Fehler
Doch, wenn du auf eine solche Variable zuzugreifen versuchst, ohne sie vorher mit einem Wert initialisiert zu haben, weist die PHP auch darauf hin.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:14 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG