0

I am trying to update a variable value that is within an array variable value.

You will see I am writing out a file with: file_put_contents(). The implode("\r\n", $contents)... contains the $contents variable.

I need $body_file_count to increment every iteration of the if ($i == $per_file) {...

It's pretty evident the $contents array cannot update a variable value in this case $body_file_count.

$body_file_count is the number of files outputted. It's actually the same number in the file title: $file_count...

Basically, I just need to write the $body_file_count to the:

$default_contents=$contents=array("BODY CONTENT TOP . "$body_file_count" . ");

on each if ($i == $per_file) { iteration. Obviously I could scrap $body_file_count if I could pass $file_count to the $content as $file_count is updating the title as expected.

$body_file_count = 0;
$footer = "FOOTER";
$default_contents = $contents = array("BODY CONTENT TOP . "$body_file_count" . ");

while ($row = mysql_fetch_array($result)) {
    $line = "...";
    $contents[] = $line; // Each array element will be a line in the text file
    $i++;
    $recs++;
    if ($i == $per_file) {
        $contents[] = $footer; // Add the footer to the end
        file_put_contents($_POST["a"] . "-#" . $file_count .  "-" . date('Y') . "-" . $_POST["b"] . "-" . $recs . "-" . $txtdate .  '.txt', implode("\r\n", $contents));
        $i = 0;
        $recs = 0;
        $contents = $default_contents;
        $file_count++;
        $body_file_count++;
    } // End of if()
} // End of while()

1 Answer 1

1

First beware that you have forget to add the string concatenation operator (".") on the $default_contents initialitation

I don't know if i have understand well your question. If i have understand well your problem you can try to update the the $default_contents everytime that you change $body_file_count++


$body_file_count = 0;
$footer = "FOOTER";
$default_contents = $contents = array("BODY CONTENT TOP . " . $body_file_count . " . ");

while ($row = mysql_fetch_array($result)) {
    $line = "...";
    $contents[] = $line; // Each array element will be a line in the text file
    $i++;
    $recs++;
    if ($i == $per_file) {
        $contents[] = $footer; // Add the footer to the end
        file_put_contents($_POST["a"] . "-#" . $file_count .  "-" . date('Y') . "-" . $_POST["b"] . "-" . $recs . "-" . $txtdate .  '.txt', implode("\r\n", $contents));
        $i = 0;
        $recs = 0;
        $file_count++;
        $body_file_count++;
        $default_contents = array("BODY CONTENT TOP . " . $body_file_count . " . ");
        $contents = $default_contents;
    } // End of if()
} // End of while()

Also if you don't need for anything else this variable besides to provide an initial content then you can just take it away


$body_file_count = 0;
$footer = "FOOTER";
$contents = array("BODY CONTENT TOP . " . $body_file_count . " . ");

while ($row = mysql_fetch_array($result)) {
    $line = "...";
    $contents[] = $line; // Each array element will be a line in the text file
    $i++;
    $recs++;
    if ($i == $per_file) {
        $contents[] = $footer; // Add the footer to the end
        file_put_contents($_POST["a"] . "-#" . $file_count .  "-" . date('Y') . "-" . $_POST["b"] . "-" . $recs . "-" . $txtdate .  '.txt', implode("\r\n", $contents));
        $i = 0;
        $recs = 0;
        $file_count++;
        $body_file_count++;
        $contents = array("BODY CONTENT TOP . " . $body_file_count . " . ");
    } // End of if()
} // End of while()

Sign up to request clarification or add additional context in comments.

1 Comment

I thought I tried this already, but I did not place the $contents at the end of the if iteration. It appears to be outputting the $file_count OK now. Thank you for the suggestion.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.