<?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;
};
}
}
?>
Id,Price,Name,Tax
1,12,First ,
2,432,Second,1
3,865,3rd,1
4,345,4th,1
5,765,December,
6,453,May,
7,349,xcart,
8,111,opencart,0
9,10234,typical case,0
10,8,45-23,0