我有一个文件,每行包含 int; int 值。两列都是逐行升序。我计划将该文件加载到一个包含以下代码的数组中:
while( ! feof($f) ) {
$line = fgets( $f, 32 );
$tmp = explode( ";", $line );
$elements[] = array( $tmp[0] => $tmp[1] );
}
我打算使用这个数组根据键$ tmp [0]进行二进制搜索。数组将有1000个元素,但搜索将应用于10.000个不同的值。我应该简单地定义一个2x1000矩阵并将元素加载到其中吗?
THX
答案 0 :(得分:2)
您可以使用file
将文件的全部内容作为一个行数组。假设每对中的第一个int是唯一的,您可以将它用作数组的键:
foreach (file('ints.txt') as $line) {
list($key, $value) = explode(';', $line);
$elements[$key] = $value;
}
按$elements
中的键查找值O(n) but really close to O(1);这可能足够快到你的目的。