php函数指针
1. 这个php函数,为什么第二次只读取了第一次之后的部分
fgets()读了一次以后,读取文件的指针会偏移到当前字符的后面,当再用fgets()的时候,就从之后开始继续读取。
并且,后面执行fgets()时候,如果设定的长度已经超过这一行了剩下字符的长度(包括\n),那么fgets()也不会读取到下一行,但指针指到下一行,在下一次使用fgets()时才会读取下一行。
2. 在php中哪些是数组指针操作函数
current():取得目前指针位置的内容资料。
key():读取目前指针所指向资料的索引值(键值)。
next():将数组中的内部指针移动到下一个单元。
prev():将数组的内部指针倒回一位。
end():将数组的内部指针指向最后一个元素。
reset():将目前指针无条件移至第一个索引位置。
3. 如何运用PHP函数fgets读取指针文件
PHP函数fgets就是其中一个功能强大的函数。 PHP函数fgets -- 从文件指针中读取一行说明 string fgets ( int handle [, int length] ) 从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。 出错时返回 FALSE。 PHP函数fgets通常的缺陷: 文件指针必须是有效的,并且必须指向一个由 fopen() 或 fsockopen() 成功打开的文件。 以下是一个PHP函数fgets简单例子: 例子 1. 逐行读取文件<?php$handle=fopen(/tmp/inputfile.txt,r); while(!feof($handle)){$buffer=fgets($fd,4096); 注: length 参数从 PHP 4.2.0 起成为可选项,如果忽略,则行的长度被假定为 1024。从 PHP 4.3 开始源码天空 ,忽略掉 length 将继续从流中读取数据直到行结束。如果文件中的大多数行都大于 8KB,则在脚本中指定最大行的长度在利用资源上更为有效。 注: 从 PHP 4.3 开始本函数可以安全用于二进制文件。早期的版本则不行。
4. 请问怎样理解PHP数组内部指针
打个比方,去银行排队办理业务,会拿到一张号码,一般这个号码都是连续的,叫到你的号码就轮到你去取钱,这个号码就是指针,你们这群排队的人就是数组。
一个人办完业务,指针就指到下一个,下一个人可以上去办理,这个时候就相当于执行了php的next()函数
假如最后一个人说他爸是李X,他要先办,好吧,银行就执行一个end()函数,指针直接到指到最后一个。
5. PHP中如何将fseek指针向前移动
$output='test.txt';
//写入方式打开文件
$fp = fopen($output, 'w');
$line = pack("n4", 1,0,0,1);
//n 长度 16位 2字节
//N 长度 32位 4字节
fwrite($fp, $line);
//test.txt 十六进制 内容 00 01 00 00 00 00 00 01
fseek($fp, 2);//移动指针到第2个字节位置
$line = pack("n",9999);
fwrite($fp, $line);
//test.txt 十六进制 内容 00 01 27 0F 00 00 00 01
fseek($fp, 1);//移动指针到第1个字节位置
$line = pack("n",9999);
fwrite($fp, $line);
//test.txt 十六进制 内容 00 27 0F 0F 00 00 00 01
fclose($fp);
6. php程序语言里 有没有 指针
谁说没有???
PHP里面有引用,在函数参数传递的时候,就达到了C语言参数里面指针的功能。
PHP里面还有动态变量,指向变量值的变量的值,可以代替一切的指针,而且更加直观,例如:
$x=1;
$y=2;
$a='x';
$$a 变量指向变量 $x
7. PHP 的文件指针函数 feof()的问题
rewind($fopen)这个是把指针定到开头了(等价于fseek(stream, 0, SEEK_SET)),但是你紧接着又fseek($fopen,0,SEEK_END),把指针定到结尾,(这两个操作连着的话无意义吧),定到结尾了。
你这个问题一开始看fseek还是有点乱的,你就想成是把光标移动到结尾的!之后,但是又在eof之前。如果你fseek($fopen,0,SEEK_END)后,再fgetc($fopen);一次,再var_mp($feof($fopen)) 就是true了。
另外你这里有个错误,SEEK_END需要配合负数偏移使用的,正数右移,负数左移,因为已经是结尾了,右移无意义了。则你fseek($fopen,345,SEEK_END) 这里是错的。
还有fseek如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置的。
8. PHP 数组内部指针移动一位用next( ) 向前移动多位用什么函数
你可以使用for循环自己写就可以了。
需要移动几位就是循环几次调用next就可以了
9. php中fopen的模式a+的文件指针问题
fopen a+指针位只对写入限制,读取没有,也就是说可以读取任何位置文件部分,自然不受指向文件结尾的指针限制,写入的话就会限制只能在尾部写入,php手册中关于fopen函数的用户评论有这么一段
Note: If you have opened the file in append mode ("a" or "a+"), any data you write to the file will always be appended, regardless of the file position. But PHP distinguish between read and write position, and you may freely read at any position, but when you write it will always append at the end.
If you don't want that write restriction, open the file in read-write mode ("r+") and then start by moving the file pointer to the end.