Quick actions

cmd+k|ctrl+k

Navigation

Languages

CSVReader

Snippet info

Language

Php

Visibility

public

Author

dmitry8912

Created

2016-11-06T13:15:37Z

Updated

2017-07-12T17:54:07Z

<?php
//Класс для чтения файла
class CSVReader
{
    //Переменная для хранения прочитанного файла, private - чтобы не было возможности внести изменения извне
    private $csv = array();
    //Функция import читает файл, записывает данные в массив, сортирует его, возвращает первые 5 элементов, в случае неудачи возвращает FALSE
    public function import($file)
    {
        if($this->readFileToArray($file)) { return false; };
        if($this->sortByPrice()) { return false; };
        return array_slice($this->csv,0,5,TRUE);
    }
    //Функция сортировки, в случае неудачи возвращает FALSE
    private function sortByPrice()
    {
        return usort($this->csv,function ($a,$b) {
            if($a['Price'] == $b['Price']) 
            {
                return 0;
            } 
            return ($a['Price'] < $b['Price']) ? -1 : 1;
        });
    }
    //Функция, читающая файл, и записывающая данные в массив, в случае неудачи возвращает FALSE
    private function readFileToArray($file)
    {
        $header = array();
        $row=0;
        if(($handle=fopen($file,'r'))==FALSE) { return false; };
        while(($data=fgetcsv($handle))!==FALSE)
        {
            if($row==0)
            {
                $header=$data;
            } else {
                $toCsv=array();
                for($i=0;$i<count($data);$i++)
                {
                    $toCsv[$header[$i]]= $data[$i];
                };
                $this->csv[]=$toCsv;
            };
            ++$row;
        };
    }
}
?>
INFO