我有一个文件,其中包含我正在编写脚本的游戏的100个高分。
1.2345, name1
1.3456, name2
1.4567, name3
例如。
使用php,我需要显示行名称X的内容,以便在新分数高于旧分数时覆盖它。此外,我需要找出nameX出现在哪个行号,以便他们知道他们所处的位置(排名)。
我应该研究哪些php函数才能使这个工作起作用?
答案 0 :(得分:4)
您可以使用fopen
和fread
或file
。就个人而言,我会选择文件,因为这听起来像是一个相当小的文件开始。
$row = -1;
$fl = file( '/path/to/file' );
if( $fl )
{
foreach( $fl as $i => $line )
{
// break the line in two. This can also be done through subst, but when
// the contents of the string are this simple, explode works just fine.
$pieces = explode( ", ", $line );
if( $pieces[ 1 ] == $name )
{
$row = $i;
break;
}
}
// $row is now the index of the row that the user is on.
// or it is -1.
}
else
{
// do something to handle inability to read file.
}
为了更好的衡量,fopen方法:
// create the file resource (or return false)
$fl = fopen( '/path/to/file', 'r' );
if( !$fl ) echo 'error'; /* handle error */
$row = -1;
// reads the file line by line.
while( $line = fread( $fl ) )
{
// recognize this?
$pieces = explode( ", ", $line );
if( $pieces[ 1 ] == $name )
{
// ftell returns the current line number.
$row = ftell( $fl );
break;
}
}
// yada yada yada
答案 1 :(得分:2)
这是我一直推荐的链接,到目前为止它从未失败过。
来自链接:
<?php
// set file to read
$file = '/usr/local/stuff/that/should/be/elsewhere/recipes/omelette.txt' or die('Could not read file!');
// read file into array
$data = file($file) or die('Could not read file!');
// loop through array and print each line
foreach ($data as $line) {
echo $line;
}
?>
答案 2 :(得分:0)
首先,您需要读取所有文件内容。修改你想要的线,然后将它们全部放回文件中。但是,如果同时运行脚本,这将具有性能和构造扩展。