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.