Seite 1 von 2

isset($array)-Problem

Verfasst: Do Apr 19, 2012 12:39 pm
von naums
Ahoi.

Ich bin seit ner halben Stunde am verzweifeln. Folgender Code funktioniert nicht.

Code: Alles auswählen

    $text=NULL;
    $systems=getSystems2();
    $csys=count($systems);
    for ($i=1; $i<=$csys; $i++)
    {
        $cinf=count($info[$systems[$i][2]]);
        for ($a=0; $a<$cinf and !empty($info[$systems[$i][2]][$a]); $a++);
        {
            if ($a==0)
                $text.='['.$systems[$i][2]."]\n";
            
            $text.="$a='".$info[$systems[$i][2]][$a]."'\n";
            //echo($text);
        };
    };
    
    die ($path.'<br />'.$text);
    $f=fopen($path, "w+");
    fwrite($f, $text);
    fclose ($f);
getSystems2():

Code: Alles auswählen

function getSystems2()
{
    return array(
         1=>array("Atari", "atari", "atari"),
         2=>array("Sega Dreamcast", "dreamcast", "dreamcast"),
         3=>array("Nintendo 64", "n64", "n64"),
         4=>array("Nintendo Entertainment System", "nes", "nes"),
         5=>array("Nintendo Gamecube","ngc", "ngc"),
         6=>array("Playstation","ps", "ps"),
         7=>array("Playstation 2","ps2", "ps2"),
         8=>array("Playstation 3","ps3", "ps3"),
         9=>array("Sega MegaDrive","segamegadrive", "genesis"),
        10=>array("Sega Saturn","segasaturn", "saturn"),
        11=>array("Super Nintendo","snes", "snes"),
        12=>array("Nintendo Wii","wii", "wii"),
        13=>array("Nintendo WiiU", "wiiu","wiiu"),
        14=>array("Microsoft Xbox", "xbox", "xbox"),
        15=>array("Microsoft Xbox360", "xbox360", "xbox360"),
        16=>array("Playstation Portable", "psp", "psp"),
        17=>array("PS Vita", "psvita", "psvita"),
        18=>array("Nintendo Gameboy", "gb","gb"),
        19=>array("Nintendo Gameboy Color", "gbc", "gbc"),
        20=>array("Nintendo Gameboy Advance", "gba", "gba"),
        21=>array("Nintendo DS", "nds", "nds"),
        22=>array("Linux", "linux", "linux"),
        23=>array("Microsoft Windows","windows", "windows"),
        24=>array("Apple Macintosh", "mac", "mac"));
};
$info:

Code: Alles auswählen

$info["xbox360"][0]="link.htm";
Was soll der Code machen: Aus dem gegeben Array $info einen Text für eine .ini-Datei. Das wäre in dem Fall dieser:

Code: Alles auswählen

[xbox360]
0='link.htm'
was kommt raus:

Code: Alles auswählen

[atari]
0=''
[n64]
0=''
...
Also: Die Überprüfung ob $info[$system[$i][0]][$a] gesetzt ist funktioniert nicht. Ich habe schon vielen ausprobiert isset und empty liefern beide das gleiche ergebnis zurück.

Warum? Kann mir bitte jmd. helfen den Code lauffähig zu bekommen. PS: PHP-Warnungen:

Code: Alles auswählen

Notice: Undefined index: atari in /media/HOMES/trunk/og-online/inc/ad.php on line 60 Notice: Undefined index: atari in /media/HOMES/trunk/og-online/inc/ad.php on line 66 Notice: Undefined index: dreamcast in /media/HOMES/trunk/og-online/inc/ad.php on line 60 Notice: Undefined index: dreamcast in /media/HOMES/trunk/og-online/inc/ad.php on line 66
Line60 ist die Zeile mit dem 2. for.

MfG Naums

Re: isset($array)-Problem

Verfasst: Do Apr 19, 2012 1:14 pm
von Kerli
naums hat geschrieben:Also: Die Überprüfung ob $info[$system[$i][0]][$a] gesetzt ist funktioniert nicht. Ich habe schon vielen ausprobiert isset und empty liefern beide das gleiche ergebnis zurück.
Bevor du $info[$system[$i][0]][$a] prüfst solltest du einmal schauen ob überhaupt $info[$system[$i][0]] gesetzt ist. Wie schaut denn $info genau aus? (var_dump($info);)

Warum erstellst du denn eigentlich dein Array so kompliziert?

Re: isset($array)-Problem

Verfasst: Do Apr 19, 2012 1:24 pm
von naums

Code: Alles auswählen

array(2) { ["xbox360"]=> array(1) { [0]=> string(9) "amazon.de" } ["windows"]=> array(1) { [0]=> string(8) "link.htm" } }
(var_dump($info))

Das Array ist so kompliziert garnicht. Im Prinzip musste ich das System und den Link speichern und zwar abhängig voneinander. Warum denn dann nicht so? So sind mehrere Systeme mit mehreren Links möglich. Das wird in eine .ini-Datei geschrieben und später wieder gelesen -> einfacher gehts kaum.

$systems ist ordentlich gesetzt. Siehe getSystems2(); - Die funktion benutze ich schon lange und habe nur einen "Fehler" gefunden, nämlich, dass es nicht bei 0 losgeht (was ich mir dabei nur gedacht habe ^^). also wenn $systems[$i][2] definiert ist, gibts es $systems[$i][0] auch. und umgedreht.

Re: isset($array)-Problem

Verfasst: Do Apr 19, 2012 2:12 pm
von Kerli
Ich hab mich eigentlich auf Systems-Array bezogen. Ich hätte da eher sowas gemacht:

Code: Alles auswählen

$systems = array(
  "atari" => array("Atari", "atari"),
  "segamegadrive" => array("Sega MegaDrive", "genesis")
);

foreach( $info as $sys => $data )
{
  if( isset($systems[$sys]) )
    // Hier noch die Ausgabe...
}
isset war schon richtig. Das Problem ist nur ein falsches Zeichen und fehlende Bindung von Variablen an Gültigkeitsbereiche. Schau einmal was genau denn eigentlich dein Schleifenkörper der zweiten Schleife ist ;)

Re: isset($array)-Problem

Verfasst: Do Apr 19, 2012 2:54 pm
von naums
Verdammt! Und ich hocke hier schon ne halbe Stunde an dem Problem, schreie meinen Code voll, weil der net so will wie ich, und dann hängt es an diesem einen kleinen Zeichen, was ich die ganze Zeit übersehen habe >.< So ein scheiß.

Danke fürs Lösen eines Problemes, was ich hätte eigentlich selbst lösen können, aber ich war wiedermal zu blind dazu. :lol:

MfG Naums

Re: isset($array)-Problem

Verfasst: Do Apr 19, 2012 3:01 pm
von Xin
Auch ich rate Dir vorsichtig zu weniger Arrays und mehr Klasse. ^^

Re: isset($array)-Problem

Verfasst: Do Apr 19, 2012 7:48 pm
von naums
ich baue gerne Arrays :) Das Problem mit den Klassen ist nur, dass die auch net besser funktionieren... weil sowas:

$class->$system

geht ja auch ne. Ergo...

Re: isset($array)-Problem

Verfasst: Do Apr 19, 2012 8:56 pm
von Xin
Probiere Dich an daran in Klassen statt in Arrays zu denken.
Der Code wird besser.

Re: isset($array)-Problem

Verfasst: So Apr 22, 2012 7:52 pm
von naums
Gibts eigentlich sowas wie Zeiger aus C++ in PHP?

Re: isset($array)-Problem

Verfasst: So Apr 22, 2012 9:31 pm
von Xin
naums hat geschrieben:Gibts eigentlich sowas wie Zeiger aus C++ in PHP?
Alles sind Zeiger... nur dass Du halt nicht damit spielen darfst.

Es gibt Referenzen. &$ref, wenn ich mich recht entsinne.