php讀取csv數(shù)據(jù)保存到數(shù)組的方法

字號(hào):


    這篇文章主要介紹了php讀取csv數(shù)據(jù)保存到數(shù)組的方法,通過(guò)封裝的類(lèi)文件實(shí)現(xiàn)這一功能,是對(duì)csv文件操作的實(shí)用技巧,需要的朋友可以參考下
    本文實(shí)例講述了php讀取csv數(shù)據(jù)保存到數(shù)組的方法。分享給大家供大家參考。具體分析如下:
    csv是常用的excel格式的替代品,很多時(shí)候我們導(dǎo)出數(shù)據(jù)是都會(huì)導(dǎo)成csv格式的,這樣和excel沒(méi)什么區(qū)別,下面的程序是要讀取csv數(shù)據(jù)保存到數(shù)組我們要對(duì)數(shù)據(jù)進(jìn)行操作,所以保存到數(shù)據(jù),代碼如下:
    代碼如下:
    $info=csvtoarray::open('teste.csv');
    //echo '<pre>';
    //print_r($info);
    //echo '</pre>';
    foreach ($info as $c)
    {
    echo '學(xué)號(hào):'.$c[0];
    echo '姓名:'.$c[1];
    echo '年齡:'.$c[2];
    echo '身高:'.$c[3].'<br>';
    }
    final class csvtoarray{
    /**
    * 把csv文件解析為一個(gè)數(shù)組返回
    *
    * @param string $file 要解析的csv文件路徑
    * @param char $delimiter csv文件里的內(nèi)容分隔符 默認(rèn)為;
    * @return array
    */
    public static function open($file, $delimiter = ';'){
    return self::ordenamultiarray(self::csvarray($file, $delimiter), 1);
    }
    private function csvarray($file, $delimiter)
    {
    $result = array();
    $size = filesize($file) + 1;
    $file = fopen($file, 'r');
    $keys = fgetcsv($file, $size, $delimiter);
    fseek($file,0);//這里原來(lái)的沒(méi)有..自己加上..這樣能讀取到第一行的內(nèi)容
    while ($row = fgetcsv($file, $size, $delimiter))
    {
    for($i = 0; $i < count($row); $i++)
    {
    if(array_key_exists($i, $keys))
    {
    $row[$keys[$i]] = $row[$i];
    }
    }
    print_r($row);
    $result[] = $row;
    }
    fclose($file);
    return $result;
    }
    private function ordenamultiarray($multiarray, $secondindex)
    {
    while (list($firstindex, ) = each($multiarray))
    $indexmap[$firstindex] = $multiarray[$firstindex][$secondindex];
    asort($indexmap);
    while (list($firstindex, ) = each($indexmap))
    if (is_numeric($firstindex))
    $sortedarray[] = $multiarray[$firstindex];
    else $sortedarray[$firstindex] = $multiarray[$firstindex];
    return $sortedarray;
    }
    }
    希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。