很多站长朋友们都不太清楚php指针注意问题,今天小编就来给大家整理php指针注意问题,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP中引用变量(指针)问题 2、 php文件指针 3、 php函数指针问题 4、 PHP 的文件指针函数 feof()的问题 PHP中引用变量(指针)问题因为$var2是$var1的引用,换句话说,这两变量指向同一个地址。一个改变了,并一个变量也跟着改变了。
php文件指针文件读写的问题,我写了一个简单的测试程序,你可以参考,注意我这里该测试的php文件与test.txt放在同一个目录下:
<?php
function updateSpecialLineContent($lineNo, $replace, $file) {
$file_handle = fopen($file, 'r') or die("open file fail");
$content = array();
$i = 0;
while (!feof($file_handle)) {
$line = fgets($file_handle);
$i++;
if ($lineNo == $i) {
$content[$i - 1] = $replace;
} else {
$content[$i - 1] = $line;
}
}
fclose($file_handle);
unlink($file);
//注意,下面是进行一个必要判断,如果你要替换的行不是最后一行,注意添加换号符,我这里是windows环境,故是"\r\n"
if ($lineNo != $i) {
$content[$lineNo - 1] .= "\r\n";
}
foreach ($content as $line) {
file_put_contents($file, $line, FILE_APPEND);
}
echo "update successfully";
}
updateSpecialLineContent(1, "hello", "test.txt");
php函数指针问题移动文件指针,通常需要在文件中跳转、从不同位置读取以及写入不同位置。有一些PHP 函数可以完成这些任务。
1 .将文件指针移到偏移量指定的位置
fseek()函数将指针移到给定的偏移量所指定的位置。其形式为:
int fseek (resource handle , int offset [, int whence ] )
如果忽略可选参数whence ,则位置将设置为从文件开头的offset 字节处。否则,whence 可以设置为3 个可能的值,它将影响指针的位置。
•SEEK_CUR。设置指针位置为当前位置加上offset 个字节。
•SEEK_END。设置指针位置为EOF 加上。ffset 字节。在这里,。ffset 必须设置为负值。
•SEEK_SET。设置指针位置为offset 字节处。这与忽略whence 效果相同。
2.获取当前指针的偏移量
ftell()函数获取资源中文件指针当前位置的偏移量。其形式为:
int ftell ( resource handle )
3.将文件指针移回至文件开始处
rewind() 函数将文件指针移回至资源的开头。其形式为:
int rewind ( resource handle )
PHP 的文件指针函数 feof()的问题rewind($fopen)这个是把指针定到开头了(等价于fseek(stream, 0, SEEK_SET)),但是你紧接着又fseek($fopen,0,SEEK_END),把指针定到结尾,(这两个操作连着的话无意义吧),定到结尾了。
你这个问题一开始看fseek还是有点乱的,你就想成是把光标移动到结尾的!之后,但是又在eof之前。如果你fseek($fopen,0,SEEK_END)后,再fgetc($fopen);一次,再var_dump($feof($fopen)) 就是true了。
另外你这里有个错误,SEEK_END需要配合负数偏移使用的,正数右移,负数左移,因为已经是结尾了,右移无意义了。则你fseek($fopen,345,SEEK_END) 这里是错的。
还有fseek如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置的。
关于php指针注意问题的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php指针注意问题 php的注释方法的详细内容...