isset($array)-Problem

Fragen zum Thema HTML, JavaScript, PHP
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

isset($array)-Problem

Beitrag von naums » Do Apr 19, 2012 12:39 pm

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
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von Kerli » Do Apr 19, 2012 1:14 pm

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?
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von naums » Do Apr 19, 2012 1:24 pm

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.
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von Kerli » Do Apr 19, 2012 2:12 pm

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 ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von naums » Do Apr 19, 2012 2:54 pm

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
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8861
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von Xin » Do Apr 19, 2012 3:01 pm

Auch ich rate Dir vorsichtig zu weniger Arrays und mehr Klasse. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von naums » Do Apr 19, 2012 7:48 pm

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...
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8861
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von Xin » Do Apr 19, 2012 8:56 pm

Probiere Dich an daran in Klassen statt in Arrays zu denken.
Der Code wird besser.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von naums » So Apr 22, 2012 7:52 pm

Gibts eigentlich sowas wie Zeiger aus C++ in PHP?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8861
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: isset($array)-Problem

Beitrag von Xin » So Apr 22, 2012 9:31 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten