在php中更快地解析数组

梅纳德曼

我有一个包含40 000行的CSV文件,我将所有行加载到数组中,并且使用此函数返回仅具有我需要的值的子数组...这是代码

<?php

//----------------------------------------------
function query_array($theArray,$theQuery,$col){

    $return = array();

    foreach($theArray as $subarray){
        if ($subarray[$col] == $theQuery) {
            $return[] = $subarray;
            }
    }

    return $return;
}

//----------------------------------------------
function parse_csv_file($csvfile) {

    $csvData = file_get_contents($csvfile);
    $lines = explode("\n", $csvData);
    $array = array();
    foreach ($lines as $line) {
        $array[] = str_getcsv($line);
    }

    return $array;
}

//----------------------------------------------
function echo_array($theArray) {

    $return = "";

    foreach ($theArray as $key => $value) {
        $result = implode(' ', $value);
        $return .= '(# '. $key .')-> '. $result .'<br/>';
    }

    return $return;

}

//----------------------------------------------
$starttime = microtime(TRUE);

$fileName = "the-path-to-my-file/PHOTOS.TXT";
$basename = basename($fileName);
$MyQuery = "8370336";
$myCol = 0;

echo 'Query : Find : '. $MyQuery . ' dans la collone : '. $myCol . ' du fichier : '. $basename .'<br/><br/>';

$outputArray = parse_csv_file($fileName);
$slimDownArray = query_array($outputArray, $MyQuery, $myCol);
echo echo_array($slimDownArray);

$endtime = microtime(TRUE);
$totaltime = $endtime - $starttime;
echo '<br/>Temp execution : '. round($totaltime,2) . ' second<br/>'."\n";

?>

因此,要从40 000行csv中获得23个条目,需要1.7秒...问题是,我们可以使其更快吗?不到1秒?

阿布拉·卡达弗

对象或类方法将更好/更灵活,但这种方法应该比您拥有的方法快。我只是将常量用于几件事。$line只有在您关心行号的情况下,这些东西才存在:

function query_csv($query, $col) {

    static $fp;

    if(!$fp) {
        $fp = fopen(CSV_NAME, 'r');
    }    
    $line = 0;
    $return = array();

    while(($data = fgetcsv($fp, 0, CSV_DELIM, CSV_ENC)) !== false) {
        if($data[$col] == $query) {
            //$return[$line] = $data; //if you want array keyed by line
            $return[] = $data;
        }
        $line++;
    }
    return $return;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在NumPy中,更快地创建更大的数组?

来自分类Dev

在Python中更快地传输图像Numpy数组

来自分类Dev

使用索引数组更快地进行循环

来自分类Dev

转换位数组以更快地设置

来自分类Dev

如何更快地搜索对象数组?

来自分类Dev

更快地从数组中提取值列表

来自分类Dev

Anylogic:更快地填充数组值

来自分类Dev

是否有可能优化并更快地将数组乘以C中的数字?

来自分类Dev

在网页中更快地加载图像

来自分类Dev

在R中更快地创建差异列

来自分类Dev

在Pandas中更快地处理Dataframe

来自分类Dev

在MATLAB中更快地查找行

来自分类Dev

如何更快地使“值在dateframe列中”

来自分类Dev

在R中更快地创建矩阵

来自分类Dev

在Julia中更快地读取CSV文件

来自分类Dev

在Julia中更快地读取CSV文件

来自分类Dev

在Haskell中更快地进行直方图计算

来自分类Dev

如何更快地使“值在dateframe列中”

来自分类Dev

在R中更快地创建差异列

来自分类Dev

在组装中更快地清除屏幕

来自分类Dev

更快地从数据框中删除项目

来自分类Dev

使用php根据每个日期更快地从数据库中搜索酒店的结果

来自分类Dev

如何使用php更快地将图像加载到网站中

来自分类Dev

如何比OpenPop.dll更快地解析电子邮件

来自分类Dev

如何使此SQL函数能够更快地解析XML

来自分类Dev

如何比快速排序更快地排序整数数组?

来自分类Dev

我可以更快地找到比数组更多的索引吗?

来自分类Dev

PHP include()或JS src是否可以更快地包含文件?

来自分类Dev

如何使用php更快地在网站上加载图像