Get all rows from a CSV file
This simplifies the reading of a CSV file by abstracting file-open, get-header, get-rows and file-close
operations into a single method call, where all those operations are handled internally. All you have to
do is call the $files->getAllCSV($filename)
method once and it will return an array of arrays (one per row). This method will also skip over blank rows by default, unlike PHP’s fgetcsv() which will return a 1-column row
with null value.
This method is limited by available memory, so when working with potentially large files, you should use the
$files->getCSV()
method instead, which reads the CSV file row-by-row rather than all at once.
Note for the method $options
argument that the length
, separator
, enclosure
and escape
options
all correspond to the identically named PHP fgetcsv
arguments.
Example foods.csv file (first row is header):
Example of reading the foods.csv file above:
Available since version 3.0.197.
Examples
Food,Type,Color
Apple,Fruit,Red
Banana,Fruit,Yellow
Spinach,Vegetable,Green
$rows = $files->getAllCSV('/path/to/foods.csv');
foreach($rows as $row) {
echo "Food: $row[Food] ";
echo "Type: $row[Type] ";
echo "Color: $row[Color] ";
}
Usage
// basic usage
$array = $files->getAllCSV(string $filename);
// usage with all arguments
$array = $files->getAllCSV(string $filename, array $options = []);
Arguments
Name | Type(s) | Description |
---|---|---|
filename | string | CSV filename to read from |
options (optional) | array |
|
Return value
array
API reference based on ProcessWire core version 3.0.236