要从一个文件中查出以唯一字符串 a 开头的那一行,怎么能提高查询效率。
我现在的方法很笨:
- 按行把文件内容存入一个数组
- 用正则去match数组中的每一个元素直到找到为止
这样感觉效率很低,因为文件有17万行,所以最低也要循环17万次...
初学者希望得到大家的帮助,谢谢。
回复内容:
要从一个文件中查出以唯一字符串 a 开头的那一行,怎么能提高查询效率。
我现在的方法很笨:
- 按行把文件内容存入一个数组
- 用正则去match数组中的每一个元素直到找到为止
这样感觉效率很低,因为文件有17万行,所以最低也要循环17万次...
初学者希望得到大家的帮助,谢谢。
把这个文件处理成一个用字典树(trie)或者B树存储的结构,然后就可以快速查询了。
前面说得可能太抽象,给你一个容易实现的算法吧。效率虽然比trie/b-tree略低,但是也很够用。
预处理
1. 遍历这个文件,记录每行的offset记录下来,作为int的数组。
2. 对这个数组进行间接排序。注意,所谓间接,指的是排序时比较的是这个数组元素指向的行。
3. 将这个数组保存起来(17w个int,也就不到700KB,随便什么地方保存)。
查询
1. 读取这个数组。
2. 使用"间接"二分查找。注意,查找时比较的是对应行的前n个字符,n == strlen(a)。
如果看不懂这个算法的话,那就洗洗睡吧。
以唯一字符串a开头,意思是说,第一个是a,第二个不是a么?
<?php $file = "./test.txt"; $lines = file($file); foreach($lines as $line_num => $line) { $line = trim($line); $len = strlen($line); if ($len > 0 and $line[0] == "a" and ($len == 1 or $line[1] != "a") ) { echo $line . "\n"; } } ?>
没必要用正则吧,不知道PHP里面正则会不会提前compile,效率如何。
额。。。。直接把符合的行给匹配出来好了。整个文件一次读取作为一个字符串。。。
然后用正则,匹配首字母是a的行。。既然你都说是行了,哪必然有换行符的嘛。。。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Dreamweaver Mac版
ビジュアル Web 開発ツール
