Bird
Raised Fist0
PHPprogramming~5 mins

Writing files (fwrite, file_put_contents) in PHP - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Writing files (fwrite, file_put_contents)
O(n)
Understanding Time Complexity

When writing data to files in PHP, it's important to know how the time it takes grows as the data size grows.

We want to understand how the program's work changes when we write more or less data.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


$data = str_repeat("A", 1000);
$file = fopen("example.txt", "w");
fwrite($file, $data);
fclose($file);

// Or using file_put_contents
file_put_contents("example2.txt", $data);
    

This code writes a string of data to a file using two common PHP functions.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Writing each byte of the string to the file.
  • How many times: Once for each character in the data string.
How Execution Grows With Input

As the size of the data string grows, the number of write operations grows roughly the same way.

Input Size (n)Approx. Operations
10About 10 write steps
100About 100 write steps
1000About 1000 write steps

Pattern observation: The work grows directly with the amount of data to write.

Final Time Complexity

Time Complexity: O(n)

This means the time to write grows in a straight line with the size of the data.

Common Mistake

[X] Wrong: "Writing to a file is always instant, no matter how big the data is."

[OK] Correct: Writing takes longer when there is more data because each byte must be saved, so time grows with data size.

Interview Connect

Understanding how file writing time grows helps you explain performance in real projects and shows you think about efficiency clearly.

Self-Check

"What if we buffered the data and wrote it in chunks instead of all at once? How would the time complexity change?"

Practice

(1/5)
1. Which PHP function is best for quickly writing a string to a file without manually opening or closing it?
easy
A. fclose
B. fwrite
C. fopen
D. file_put_contents

Solution

  1. Step 1: Understand the purpose of file_put_contents

    This function writes data to a file in one step, handling opening and closing automatically.
  2. Step 2: Compare with fwrite

    fwrite requires manual file opening and closing, so it's not as quick for simple writes.
  3. Final Answer:

    file_put_contents -> Option D
  4. Quick Check:

    Quick file write = file_put_contents [OK]
Hint: Use file_put_contents for quick file writes without fopen/fclose [OK]
Common Mistakes:
  • Confusing fwrite as a standalone write function
  • Thinking fopen writes data
  • Assuming fclose writes data
2. Which of the following is the correct syntax to write "Hello" to a file named "greet.txt" using fwrite?
easy
A. $file = fopen('greet.txt'); fwrite($file, 'Hello');
B. $file = fopen('greet.txt', 'w'); fwrite($file, 'Hello'); fclose($file);
C. file_put_contents('greet.txt', 'Hello');
D. fwrite('greet.txt', 'Hello');

Solution

  1. Step 1: Check the correct usage of fwrite

    fwrite requires a file handle from fopen opened in write mode.
  2. Step 2: Validate the full sequence

    $file = fopen('greet.txt', 'w'); fwrite($file, 'Hello'); fclose($file); opens the file in write mode, writes "Hello", then closes the file properly.
  3. Final Answer:

    $file = fopen('greet.txt', 'w'); fwrite($file, 'Hello'); fclose($file); -> Option B
  4. Quick Check:

    fopen + fwrite + fclose = correct syntax [OK]
Hint: Always fopen with 'w' before fwrite, then fclose [OK]
Common Mistakes:
  • Calling fwrite without fopen file handle
  • Missing file mode in fopen
  • Not closing the file after writing
3. What will be the output of this PHP code?
$filename = 'data.txt';
file_put_contents($filename, "Line1\n");
$file = fopen($filename, 'a');
fwrite($file, "Line2\n");
fclose($file);
echo file_get_contents($filename);
medium
A. Line2
B. Line1
C. Line1 Line2
D. Error: file not found

Solution

  1. Step 1: Analyze file_put_contents call

    This writes "Line1\n" to 'data.txt', creating or overwriting the file.
  2. Step 2: Analyze fopen with 'a' mode and fwrite

    Opening in append mode adds "Line2\n" after existing content.
  3. Step 3: Read file content with file_get_contents

    It returns both lines concatenated with newlines.
  4. Final Answer:

    Line1 Line2 -> Option C
  5. Quick Check:

    Append mode adds lines, so both lines appear [OK]
Hint: file_put_contents overwrites; fopen 'a' appends [OK]
Common Mistakes:
  • Assuming file_put_contents appends instead of overwrites
  • Forgetting 'a' mode appends
  • Expecting only last line output
4. Identify the error in this PHP code snippet that tries to write "Test" to "file.txt":
$file = fopen('file.txt', 'r');
fwrite($file, 'Test');
fclose($file);
medium
A. File opened in read mode, cannot write
B. Missing semicolon after fwrite
C. fclose called before fwrite
D. fopen filename missing extension

Solution

  1. Step 1: Check fopen mode

    The file is opened in 'r' (read) mode, which does not allow writing.
  2. Step 2: Understand fwrite requirements

    Writing requires 'w', 'a', or 'r+' mode; 'r' mode causes error on fwrite.
  3. Final Answer:

    File opened in read mode, cannot write -> Option A
  4. Quick Check:

    Write needs write mode, not 'r' [OK]
Hint: Open file with 'w' or 'a' to write, not 'r' [OK]
Common Mistakes:
  • Using 'r' mode when writing
  • Ignoring file mode errors
  • Assuming fwrite works on read-only handle
5. You want to save user input lines into a file, but only if the input is not empty or whitespace. Which PHP code snippet correctly writes non-empty trimmed lines to "input.txt" using fwrite?
hard
A. $file = fopen('input.txt', 'w'); foreach ($lines as $line) { if (trim($line) !== '') { fwrite($file, $line . "\n"); } } fclose($file);
B. $file = fopen('input.txt', 'w'); foreach ($lines as $line) { fwrite($file, $line . "\n"); } fclose($file);
C. file_put_contents('input.txt', implode("\n", $lines));
D. $file = fopen('input.txt', 'r'); foreach ($lines as $line) { if ($line) { fwrite($file, $line); } } fclose($file);

Solution

  1. Step 1: Check file open mode

    $file = fopen('input.txt', 'w'); foreach ($lines as $line) { if (trim($line) !== '') { fwrite($file, $line . "\n"); } } fclose($file); opens file in 'w' mode, allowing writing and overwriting.
  2. Step 2: Validate input filtering

    It uses trim($line) !== '' to skip empty or whitespace-only lines before writing.
  3. Step 3: Confirm writing and closing

    Writes each valid line with newline and closes file properly.
  4. Final Answer:

    Option A code snippet -> Option A
  5. Quick Check:

    Trim check + fwrite + 'w' mode = correct [OK]
Hint: Trim input lines and write only non-empty with fwrite [OK]
Common Mistakes:
  • Not trimming lines before writing
  • Opening file in 'r' mode when writing
  • Using file_put_contents without filtering
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard