Search code examples
phparraysfile-ioencapsulation

Encapsulating and reading into an array from text file


I'm trying to make 2 classes, to encapsulate these text files, Customer.txt and Orders.txt. The customer one I need to read each line into a separate instance of an array for each line of text, how can I do this? Also, do I have to do something about the comma's in the text files?

I know I need to use fopen, just not sure how to go about doing it.

This is what I've tried so far.

<?php



class readOrders{

$array_of_lines = fopen("orders.txt", 'r') or die("Failed to create file");
  foreach($array_of_lines as $line) {
 $pieces_of_line = explode(',', $line); 

}

class readCustomers{
$array_of_more_lines = fopen("customers.txt", 'r') or die("Failed to create file");
  foreach($array_of_more_lines as $line) {
 $pieces_of_line = explode(',', $line);

}


?>

Here are my text files

Orders.txt

1,4,0133360903,Building Java Programs,Computer Science
2,6,0321836995,Mathematics All Around,Mathematics
3,24,0321825721,Mathematics for Elementary Teachers with Activity Manual,Mathematics
4,10,0133011208,Business Math,Business

customers.txt

2,Leonie,Köhler,[email protected],University of Stuttgart,Theodor-Heuss-Straße 34,Stuttgart,,Germany,70174,+49 0711 2842222
3,Bjørn,Hansen,[email protected],University of Oslo,Ullevålsveien 14,Oslo,,Norway,0171,+47 22 44 22 22
4,François,Tremblay,[email protected],McGill University,1498 rue Bélanger,Montréal,QC,Canada,H2G 1A7,+1 (514) 721-4711

Solution

  • I think fgetcsv will be useful here, example from php-doc:

    <?php
    $row = 1;
    if (($handle = fopen("test.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            echo "<p> $num fields in line $row: <br /></p>\n";
            $row++;
            for ($c=0; $c < $num; $c++) {
                echo $data[$c] . "<br />\n";
            }
        }
        fclose($handle);
    }
    ?>