Bird
Raised Fist0
PHPprogramming~10 mins

CSV file reading and writing in PHP - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to open a CSV file for reading.

PHP
<?php
$handle = fopen('data.csv', '[1]');
?>
Drag options to blanks, or click blank then click option'
A'a'
B'w'
C'r'
D'x'
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'w' or 'a' mode which are for writing or appending.
Forgetting to put the mode in quotes.
2fill in blank
medium

Complete the code to read a line from the CSV file as an array.

PHP
<?php
$handle = fopen('data.csv', 'r');
$row = fgetcsv([1]);
?>
Drag options to blanks, or click blank then click option'
A$file
B$handle
C$csv
D$data
Attempts:
3 left
💡 Hint
Common Mistakes
Using a variable that was not assigned to fopen.
Passing a string filename instead of the file handle.
3fill in blank
hard

Fix the error in the code to write an array as a CSV line.

PHP
<?php
$handle = fopen('output.csv', 'w');
fputcsv([1], ['apple', 'banana', 'cherry']);
fclose($handle);
?>
Drag options to blanks, or click blank then click option'
A$csv
B$file
C$data
D$handle
Attempts:
3 left
💡 Hint
Common Mistakes
Passing an undefined variable to fputcsv.
Confusing the file handle variable name.
4fill in blank
hard

Fill both blanks to read all lines from a CSV file into an array.

PHP
<?php
$handle = fopen('data.csv', 'r');
$data = [];
while (($row = fgetcsv([1])) [2] false) {
    $data[] = $row;
}
fclose($handle);
?>
Drag options to blanks, or click blank then click option'
A$handle
B$file
C!==
D==
Attempts:
3 left
💡 Hint
Common Mistakes
Using '==' instead of '!==' in the while condition.
Using wrong variable for the file handle.
5fill in blank
hard

Fill all three blanks to write multiple rows to a CSV file using a loop.

PHP
<?php
$rows = [
    ['John', 'Doe', 30],
    ['Jane', 'Smith', 25],
    ['Bob', 'Johnson', 40]
];
$handle = fopen('people.csv', 'w');
foreach ([1] as [2]) {
    fputcsv([3], $row);
}
fclose($handle);
?>
Drag options to blanks, or click blank then click option'
A$rows
B$row
C$handle
D$data
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong variable names in the foreach loop.
Passing wrong variable to fputcsv.

Practice

(1/5)
1. Which PHP function is used to read a line from a CSV file and parse it into an array?
easy
A. fgetcsv()
B. fputcsv()
C. fread()
D. fwrite()

Solution

  1. Step 1: Understand CSV reading functions

    PHP provides fgetcsv() to read a line from a CSV file and convert it into an array of values.
  2. Step 2: Differentiate from writing functions

    fputcsv() writes arrays to CSV files, while fread() and fwrite() handle raw file reading/writing without CSV parsing.
  3. Final Answer:

    fgetcsv() -> Option A
  4. Quick Check:

    Read CSV line as array = fgetcsv() [OK]
Hint: Use fgetcsv() to read CSV lines into arrays [OK]
Common Mistakes:
  • Confusing fgetcsv() with fputcsv()
  • Using fread() which reads raw data, not CSV parsed
  • Trying to read CSV without parsing into arrays
2. Which of the following is the correct way to open a CSV file for writing in PHP?
easy
A. $file = fopen('data.csv', 'r');
B. $file = fopen('data.csv', 'rw');
C. $file = fopen('data.csv', 'w');
D. $file = fopen('data.csv', 'x');

Solution

  1. Step 1: Understand fopen modes

    Mode 'w' opens a file for writing and truncates it if it exists, perfect for writing CSV files.
  2. Step 2: Check other modes

    'r' is read-only, 'rw' is invalid, 'x' creates a new file but fails if it exists.
  3. Final Answer:

    $file = fopen('data.csv', 'w'); -> Option C
  4. Quick Check:

    Open file for writing = 'w' mode [OK]
Hint: Use 'w' mode in fopen() to write files [OK]
Common Mistakes:
  • Using 'r' mode when intending to write
  • Using invalid mode 'rw'
  • Using 'x' which fails if file exists
3. What will be the output of the following PHP code snippet?
$file = fopen('data.csv', 'r');
$data = fgetcsv($file);
fclose($file);
print_r($data);

Assuming the first line of data.csv is:
John,Doe,30
medium
A. Array ( [0] => John [1] => Doe [2] => 30 )
B. John,Doe,30
C. Array ( [0] => 'John,Doe,30' )
D. Error: Cannot read file

Solution

  1. Step 1: Understand fgetcsv() output

    fgetcsv() reads one CSV line and returns an array splitting values by commas.
  2. Step 2: Analyze given CSV line

    The line 'John,Doe,30' splits into array elements: 'John', 'Doe', and '30'.
  3. Final Answer:

    Array ( [0] => John [1] => Doe [2] => 30 ) -> Option A
  4. Quick Check:

    fgetcsv() splits CSV line into array [OK]
Hint: fgetcsv() returns array of CSV fields from one line [OK]
Common Mistakes:
  • Expecting a string instead of an array
  • Assuming fgetcsv returns raw line string
  • Not closing the file after reading
4. Identify the error in the following PHP code that writes data to a CSV file:
$file = fopen('output.csv', 'r');
fputcsv($file, ['Alice', 'Smith', 25]);
fclose($file);
medium
A. Array syntax is incorrect
B. fputcsv() cannot write arrays
C. Missing fclose() call
D. File opened in read mode instead of write mode

Solution

  1. Step 1: Check fopen mode

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

    fputcsv() requires the file to be opened in write ('w') or append ('a') mode to write data.
  3. Final Answer:

    File opened in read mode instead of write mode -> Option D
  4. Quick Check:

    Open file in write mode before writing [OK]
Hint: Open file with 'w' or 'a' before writing CSV [OK]
Common Mistakes:
  • Opening file in 'r' mode when writing
  • Forgetting to close the file
  • Misunderstanding fputcsv() input
5. You want to read a CSV file and write only rows where the third column is greater than 50 to a new CSV file. Which code snippet correctly implements this?
hard
A. $in = fopen('input.csv', 'w'); $out = fopen('output.csv', 'r'); while (($row = fgetcsv($in)) !== false) { if ($row[2] > 50) { fputcsv($out, $row); } } fclose($in); fclose($out);
B. $in = fopen('input.csv', 'r'); $out = fopen('output.csv', 'w'); while (($row = fgetcsv($in)) !== false) { if ($row[2] > 50) { fputcsv($out, $row); } } fclose($in); fclose($out);
C. $in = fopen('input.csv', 'r'); $out = fopen('output.csv', 'w'); while (($row = fgetcsv($out)) !== false) { if ($row[2] > 50) { fputcsv($in, $row); } } fclose($in); fclose($out);
D. $in = fopen('input.csv', 'r'); $out = fopen('output.csv', 'w'); while (($row = fgets($in)) !== false) { if ($row[2] > 50) { fputcsv($out, $row); } } fclose($in); fclose($out);

Solution

  1. Step 1: Open input file for reading and output file for writing

    Use 'r' mode for reading input and 'w' mode for writing output.
  2. Step 2: Read each CSV row with fgetcsv() from input and check third column

    Use fgetcsv($in) to read rows, then check if $row[2] > 50.
  3. Step 3: Write qualifying rows to output with fputcsv()

    If condition passes, write row to output file using fputcsv($out, $row).
  4. Final Answer:

    Code snippet B correctly reads, filters, and writes CSV rows -> Option B
  5. Quick Check:

    Read with fgetcsv(), filter by column, write with fputcsv() [OK]
Hint: Read with fgetcsv(), filter rows, write with fputcsv() [OK]
Common Mistakes:
  • Opening files with wrong modes
  • Using fgets() instead of fgetcsv() for CSV reading
  • Mixing input and output file handles
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