-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CsvToArray.Class.php
63 lines (56 loc) · 1.34 KB
/
CsvToArray.Class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
/**
* Zend Framework
*
* LICENSE
*
* Arquivo de livre reprodução
*
* Utilização:
*
* echo '<pre>';
* print_r(CsvToArray('teste.csv'));
* echo '</pre>';
*
*
*
* @category CSV
* @package CsvToArray
* @copyright Copyleft (c) 2009-2010 . (http://www.pontophp.com.br)
* @version 1.1
* @license GPLv3 <http://www.gnu.org/licenses/gpl.txt>
*/
final class CsvToArray {
/**
* Função estática principal. O parâmetro $delimiter não é obrigatório, apenas se for utilizado outro tipo de caractere, por exemplo a vírgula (,).
*
* @param string $file
* @param char $delimiter
* @return array
*/
public static function open($file, $delimiter = ';') {
return self::csvArray($file, $delimiter);
}
private static function csvArray($file, $delimiter) {
$result = Array();
$size = filesize($file) + 1;
$file = fopen($file, 'r');
$keys = fgetcsv($file, $size, $delimiter);
require_once 'ProgressBar.Class.php';
echo CARREGANDO;
$p = new ProgressBar();
echo '<div style="width: 400px;">' . "\r\n";
$p->render();
echo '</div>' . "\r\n";
while ($row = fgetcsv($file, $size, $delimiter)) {
for ($i = 0; $i < count($row); $i++)
if (array_key_exists($i, $keys))
$row[$keys[$i]] = $row[$i];
$result[] = $row;
}
$p->setProgressBarProgress(100);
fclose($file);
return $result;
}
}
?>