Jochen: Array zeilenweise in txt-Datei schreiben

Hallo zusammen!

Ich habe ein dringendes Problem...

Ich möchte den Inhalt eines Arrays zeilenweise in eine txt Datei schreiben, was nicht wirklich funktioniert. Es macht seltsame Sachen (genaue Erklärung folgt, wenn ihr sie benötigt). Hier mein Quelltext:

<?php

$distributor_file = "../distributor.txt";
$condition   = file($distributor_file;
$endpage  = "page07.php";

if      ($sex == 1 and $bed == 1)
    {$condition[0] = $condition[0] + 1+"\r\n";}
elseif ($sex == 1 and $bed == 2)
    {$condition[1] = $condition[1] + 1+"\r\n";}
elseif ($sex == 1 and $bed == 3)
    {$condition[2] = $condition[2] + 1+"\r\n";}
elseif ($sex == 1 and $bed == 4)
    {$condition[3] = $condition[3] + 1+"\r\n";}
elseif ($sex == 2 and $bed == 1)
    {$condition[4] = $condition[4] + 1+"\r\n";}
elseif ($sex == 2 and $bed == 2)
    {$condition[5] = $condition[5] + 1+"\r\n";}
$distributor = fopen($distributor_file,"w");

for ($i=0;$i<count($condition);$i++)
    {fwrite($distributor, "$condition[$i]");}
fclose($distributor);
?>

  1. Moin!

    Hallo zusammen!

    Ich habe ein dringendes Problem...

    Ich möchte den Inhalt eines Arrays zeilenweise in eine txt Datei schreiben, was nicht wirklich funktioniert. Es macht seltsame Sachen (genaue Erklärung folgt, wenn ihr sie benötigt). Hier mein Quelltext:

    <?php

    $distributor_file = "../distributor.txt";
    $condition   = file($distributor_file;

    $condition   = file($distributor_file);  # Sytax: Klammer fehlte

    $endpage  = "page07.php";

    if      ($sex == 1 and $bed == 1)
        {$condition[0] = $condition[0] + 1+"\r\n";}
    elseif ($sex == 1 and $bed == 2)
        {$condition[1] = $condition[1] + 1+"\r\n";}
    elseif ($sex == 1 and $bed == 3)
        {$condition[2] = $condition[2] + 1+"\r\n";}
    elseif ($sex == 1 and $bed == 4)
        {$condition[3] = $condition[3] + 1+"\r\n";}
    elseif ($sex == 2 and $bed == 1)
        {$condition[4] = $condition[4] + 1+"\r\n";}
    elseif ($sex == 2 and $bed == 2)
        {$condition[5] = $condition[5] + 1+"\r\n";}
    $distributor = fopen($distributor_file,"w");

    for ($i=0;$i<count($condition);$i++)
        {fwrite($distributor, "$condition[$i]");}

    {
       fwrite($distributor, $condition[$i]); # Sytax- Fehler
    }

    fclose($distributor);
    ?>

    Was sind "komische Sachen"? Wir hätten schon gern den Fehler, damit wir wissen, wonach wir suchen sollen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Hi fastix(R)!

      Danke für die schnelle Hilfe!

      Das genaue Problem: in der ersten Zeile der txt Datei setzt er ein Return und die Var aus Array[2] folgt in der 2ten Zeile. Ab dann ist aber immer eine Leerzeile zwischen den Vars der Arrays. Wenn man \r\n komplett weglässt, dann gibt es diese Leerzeilen nicht mehr - allerdings befindet sich in der ersten Zeile des txts dann direkt hintereinander Var[1] und Var[2].

      Deine Tips habe ich umgesetzt - es macht dadurch nichts neues...

      Danke schon mal! An was könnte das denn alles liegen?

      Jochen

      1. Moin!

        Also... ich hab auch nicht unbedingt was gesehen, was das Problem verursachen könnte. Inzwischen hab ich den Quelltext mal etwas "stringenter" hingeschrieben und sicher auch hinsichtlich der performance optimiert.

        <?php
        $distributor_file = "../distributor.txt";
        $condition   = file($distributor_file);
        $endpage  = "page07.php";

        if     ($sex == 1 and $bed == 1)     { $condition[0]++; }
        elseif ($sex == 1 and $bed == 2)     { $condition[1]++; }
        elseif ($sex == 1 and $bed == 3)     { $condition[2]++; }
        elseif ($sex == 1 and $bed == 4)     { $condition[3]++; }
        elseif ($sex == 2 and $bed == 1)     { $condition[4]++; }
        elseif ($sex == 2 and $bed == 2)     { $condition[5]++; }

        $strToWrite=implode("\r\n",$condition);

        Du kannst ja statt obenstehender Zeile hier auch:

        foreach ($condition as $strPart)     { $strToWrite=$strPart.trim($condition[$i])."\r\n"; }

        versuchen. Ich wüsst allerdings nicht, wo der Zeilenumbruch hekommen soll.

        Das Schreiben geht in einem Rutsch schneller.

        $FH = fopen($distributor_file,"w");
        fwrite($FH, $strToWrite);
        fclose($FH);
        ?>

        1. Moin!

          foreach ($condition as $strPart)     { $strToWrite=$strPart.trim($condition[$i])."\r\n"; }

          ist natürlich falsch :)

          ... das müsste wenn schon:

          foreach ($condition as $strPart)     { $strToWrite=$strToWrite.trim($strPart)."\r\n"; }

          lauten.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
          1. Hi fastix®,

            vielen Dank ich werd es ausprobieren - wird schon klappen!

            brauch alledings noch ne Stunde, da es jetzt "mittagessen" gibt...

            Viele Grüße und vielen, vielen Dank,

            Jochen

            1. hi,

              brauch alledings noch ne Stunde, da es jetzt "mittagessen" gibt...

              dann könntest du es demnächst vielleicht unterlassen, auf die "dringlichkeit" deines problems hinzuweisen.

              das interessiert erstens sowieso keinen, zweitens verärgert es viele leute nur - und drittens kann der zeitdruck so groß ja nicht sein, wenn du jetzt erst mal mittagessen gehst ...

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
              1. Moin!

                dann könntest du es demnächst vielleicht unterlassen, auf die "dringlichkeit" deines problems hinzuweisen.
                das interessiert erstens sowieso keinen,

                Jepp. Ich habs jetzt erst nachgelesen :)

                zweitens verärgert es viele leute nur

                Was mich nicht interessiert, kann mich auch nicht ärgern. Hätte es mich aber interessiert, dann wäre meine Antwort sicher kürzer ausgefallen :o

                und drittens kann der zeitdruck so groß ja nicht sein, wenn du jetzt erst mal mittagessen gehst ...

                Ehrlich. Das hat mich allerdings wirklich ein wenig geärgert. Copy & Paste + Test dauern sicher nicht so lange, als das das Essen nicht die paar Sekunden warten könnte.

                MFFG (Mit freundlich- friedfertigem Grinsen)

                fastix®

                --
                Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
  2. Hallo Jochen,

    genaue Erklärung folgt, wenn ihr sie benötigt

    Glaskugeln sind ab und an etwas ungenau, deswegen ist es immver von Vorteil wenn man eine möglichst genaue Problembeschreibung abgibt. Es fördert auch die Bereitschaft zu antworten...

    {$condition[0] = $condition[0] + 1+"\r\n";}

    Strings werden mit einem Punkt verbunden, also:
    $string = $substr1.$substr2;

    {fwrite($distributor, "$condition[$i]");}

    Wo öffnest du die Datei?

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. Hi David,

      Danke für Deine Hilfe. Der File öffnet sich durch die Befehlszeile, die an dem if-Schleifen-Block klebt - ungünstige Formatierung - sorry! Genauere Erklärung findest Du bei der Antwort auf fastix. Danke schon mal!!! Hoffentlich finden wir den fehler zusammen...