string über foreach() an array übergeben

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • string über foreach() an array übergeben

    Liebe Grüße aus Berlin,

    hat das schon jemand mal gemacht und weiß wie ich da weiter komme?
    hänge gerade an der Problematik fest, das meine Auswertung sich nicht so speichern lässt wie ich es brauche.


    PHP-Quellcode:
    PHP-Code:
    <?php
    $txtfilearray 
    file('data.txt');
    $data = array();

    foreach (
    $txtfilearray as $datastring)

    $datastring trim('',$datastring);
    $datastring explode(':'$datastring);
    array_push($data$datastring[0] => $datastring[1]);

    /* Mein Problem ist, 
    dass explode ein array mit 0 und 1 als Schlüssel anlegt, 
    ich aber ein array brauche, dass den string vor dem Doppelpunkt
    der Zeile als Schlüssel und den String hinter dem Doppelpunkt
     als Wert nimmt und das Array bei jeder neuen Zeile mit einem 
    neuen Datensatz ergänzt wird. array_push unterstützt auch leider 
    die Art und Weise nicht wie es oben veranschaulicht habe.*/
    ?>


    kann mir das jemand einen Denkanstoß geben? Hab echt alle array und string funktionen durchwühlt und bin verzweifelt.

    Lieben Dank im Vorraus

  • #2
    PHP-Code:
    $data[$datastring[0]] = $datastring[1]; 
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Danke für die schnelle Hilfe.

      Genau das habe ich auch ausprobiert, nur das Problem ist, dass das daraus resultierende Array von der replace_tags function nicht als replace array akzeptiert wird. Sprich:

      an der Stelle wo sonst

      funtion replace_tags(
      'inhalt' => $data['inhalt']
      )
      steht, müsste ja jetzt

      function replace_tags($data)

      ausreichen (was ziel der Übung ist),
      aber das funktioniert leider nicht.
      Irgendwie hab ich das Gefühl,
      ich seh den Wald vor lauter Bäumen nicht....

      Aber Ganz ganz lieben Dank für die Schnelle Hilfe erst einmal
      Gruß C8n8b1s

      Kommentar


      • #4
        Hm.... jetzt scheint es zu klappen?? Weiß zwar nicht warum jetzt auf einmal und vorher nicht? aber $var[0] = $var[1] ist richtig. Danke noch einmal für die Hilfe dabei, zumindest habe ich die Versuchsreihe dadurch noch einmal gesäubert und es klappte. Nur kaum freue ich mich über den Fortschritt, hänge ich an der dazugehörigen template zuweisung fest.

        weiterführende frage:

        kann es sein, dass eine im link definierte variable wie zb:

        http://www.meineseite.de?action=maintemplate

        nicht funktioniert wenn eine session erstmalig eröffnet wird mit
        session_start(); ??

        Ich habe eine index datei, die eine Klasse für template parsing bereits per require_once() einbindet (einschließlich der content integration per arrays siehe oben) und optional per if oder switch abfrage ein template auswählen könnte, wenn ich dieses in der URL in einer variablen definieren könnte. Nur weiß ich leider nicht wie sonst wenn nicht mit ?variable= ? Die Variable, die ich in der URL mit einem wert fülle, scheint an der Stelle new Page($Variable = $ifabfrageausurl) nicht zu funktionieren. Nach mehreren Tests kam ich zu dem schluss, das die übergebene variable lehr ist, obwohl sie mit der URL übergeben wird. Außer session_start(), fällt mir nichts dazu ein....


        Hat da jemand vielleicht noch einen kleinen Wink mit dem Zaunpfahl parat?

        Ich wäre überhappy! Würd das ganze dann auch gerne der Allgemeinheit zur Verfügung stellen, denn dann habe ich eine kleines aber übersichtliches und skalierbares schlankes template/content system fertig, das auf und abwärts kompatible ist....

        Lieben Dank

        Kommentar


        • #5
          kann es sein, dass eine im link definierte variable wie zb:

          http://www.meineseite.de?action=maintemplate

          nicht funktioniert wenn eine session erstmalig eröffnet wird mit
          session_start(); ??
          Das hat mit der Session nichts zutun. (ausserdem fehlt in deinem Beispiel ein Slash )
          Nach mehreren Tests kam ich zu dem schluss, das die übergebene variable lehr ist, obwohl sie mit der URL übergeben wird.
          Prüfe ob register_globals on oder off ist (phpinfo() und nach register_globals suchen).
          Wenn register_globals auf off gestellt wurde, solltest du mit den globalen Arrays arbeiten.
          Das kannst du hier nachlesen reserved variables
          Zuletzt geändert von reallife; 31.10.2005, 12:11.

          Kommentar


          • #6
            Das eigentliche Problem was hier zu Grunde liegt ist, dass es keinen Sinn macht, für jeden Frame sowie unter jede Unterseite neue Parserklassenkopien zu bemühen, die alle gleich aussehen nur mit dem Unterschied dass der Template Link ein anderer ist. Allerdings frag ich mich auch, ob ein und das selbe Parser.php File ständig innerhalb der Seiten aufgerufen werden kann ohne Probleme. Da habe ich keine praktischen Erfahrungen.

            Zu deiner Frage: register_globals ist "on" und vordefinierte Globals sind mir nicht fremd wenn du damit $_SESSION und ähnliches meinst. Nur ich weiß nicht ob eine Variable in der Form in einem Link auftauchen kann? Liegt die Variable dann im obigen Beispiel nicht sogar schon im $_SESSION array?

            PS: Wo fehlt denn der Slash? hinter .de ??

            Veriwrrt

            Kommentar


            • #7
              ach herje....

              kinders ...
              Also ich versuchs noch mal, sonst muss ich halt mal wo anders nach hilfe schaun, ich hab noch mal ne nacht drüber gebrütet und komm nich weiter...:

              4 Files:
              index.php // hier sind die unteren files per require_once implementiert und die session wird gestartet.
              cms_load.inc.php // foreach konstukt zum auswerten eines txt files in ein array
              tpl_parser.inc.php // parser klasse mit div. function()
              tpl.inc.php // html code mit platzhalten

              Da die webseite in frames aufgebaut ist (und bitte erspart mir die kommentare wie uncool frames sind, wer paktische erfahrungen hat, weiß dass es für bestimmte probleme (vor allem für alle browser kompatible) leider immernoch keine alternative gibt.) - wird das problem was sich hier stellt schnell ersichtlich. Jetzt müsste ich für platzhalter wie title und meta tags alle frames durch ein parser laufen lassen, und dachte mir das müsste doch auch mit einer switch kontollstruktur funktionieren, die einfach für jeden frame einen anderen link für die parser klasse definiert. Dazu werden vom index template aus alle frames mit übergabe einer ?variablen= zur index datei übergeben und durchlaufen alle den selben weg nur mit einem anderen link zum template der duch eine variable übergeben wird. Wie man unschwer erahnen kann, funktioniert das so leider nicht. Irgendwie kollidieren die Aufrufe ein und des selben Parser Scripts - Was auch ein vohersehbarer test bezeugte. Nun war meine bitte, wenigsten einen Denkanstoß zu geben von dem aus man weiter allein versuchen kann die Lösung auszuklügeln. Weil im Moment weiß ich nicht wie ich das anders lösen könnte, als dann doch das gesamte Konstrukt bestehend aus 4 Files für jeden Frame neu anzulegen. Aber das wäre ziemlich hohl im Land der Variablen...


              Bin für jeden konstruktiven Beitrag dankbar....
              Liebe Grüße

              Kommentar


              • #8
                Original geschrieben von c8n8b1s
                und bitte erspart mir die kommentare wie uncool frames sind, wer paktische erfahrungen hat, weiß dass es für bestimmte probleme (vor allem für alle browser kompatible) leider immernoch keine alternative gibt.
                Diese Aussage halte ich für Quark. Sie spricht für eher wenig vorhandene "praktische Erfahrung" im Umgang mit HTML und CSS.


                Da du das Thema aber parallel auch dort unter phpforum.de diskutieren lässt, und sogar deine Fragen und Antworten offenbar nur per Copy&Paste hier rüberstellst (was ich ehrlich gesagt für eine ziemliche Unverschämtheit gegenüber den Leuten halte, die sich hier die Mühe machen dir zu antworten!), bedarf das Thema hier wohl keiner weiteren Diskussion -> *close*
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar

                Lädt...
                X