使用PHP在不使用ram内存的情况下以二进制搜索方式读取文本文件
我需要制作一个脚本,在不使用内存ram的情况下,通过二进制搜索读取由管道“|”分隔的文件。我怎么做 我试过:使用PHP在不使用ram内存的情况下以二进制搜索方式读取文本文件,php,Php,我需要制作一个脚本,在不使用内存ram的情况下,通过二进制搜索读取由管道“|”分隔的文件。我怎么做 我试过: $handle = fopen("myfile.txt", "r"); if ($handle) { while (($line = fgets($handle)) !== false) { // while reads line make binary search } fclose($handle); } else { // error
$handle = fopen("myfile.txt", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
// while reads line make binary search
}
fclose($handle);
} else {
// error opening the file.
}
myfile.txt
Name|Title|Andrew|TheBook1|July|TheChest|Carol|OneTime
您可以使用
stream\u get\u line
将管道用作分隔符
while (($name = stream_get_line($handle, 0, '|')) !== false) {
// if ($name == 'Carol') { ...
}
您可以使用
stream\u get\u line
将管道用作分隔符
while (($name = stream_get_line($handle, 0, '|')) !== false) {
// if ($name == 'Carol') { ...
}
由于它的家庭作业,我将给你一些提示/步骤,让你了解如何实施它们:)
blockStart=,blockEnd=
由于它的家庭作业,我将给你一些提示/步骤,让你了解如何实施它们:)
blockStart=,blockEnd=
使用生成器读取(
yield
),请参阅。生产线的内存占用较低。@Xorifelse,yield
在这里有什么用处?$line
在每次迭代中都会被覆盖。您所说的二进制搜索是什么意思。你在找什么。您是在读取的行中搜索还是在整个文件中搜索?这是一个什么样的奇怪用例?作业为什么不干脆用“|”来爆炸并搜索呢?二进制搜索需要对输入进行排序,因此您必须将其加载到内存中才能对其进行排序…@Patrick its作为家庭作业。我需要在不使用内存ram的情况下实现它,我想不出一种方法来实现。使用生成器读取(yield
),请参阅。生产线的内存占用较低。@Xorifelse,yield
在这里有什么用处?$line
在每次迭代中都会被覆盖。您所说的二进制搜索是什么意思。你在找什么。您是在读取的行中搜索还是在整个文件中搜索?这是一个什么样的奇怪用例?作业为什么不干脆用“|”来爆炸并搜索呢?二进制搜索需要对输入进行排序,因此您必须将其加载到内存中才能对其进行排序…@Patrick its作为家庭作业。我需要在不使用内存ram的情况下实现它,我想不出一种方法来实现它。但是我仍然需要使用二进制搜索算法。但是我仍然需要使用二进制搜索算法