今天看的是其他人的文章哈 傳送門
一、PHP主要輸出方式
1唆貌、echo
echo() 實際上不是一個函數(shù)垢乙,是php語句追逮,因此您無需對其使用括號粹舵。不過眼滤,如果您希望向 echo() 傳遞一個以上的參數(shù)诅需,
那么使用括號會發(fā)生解析錯誤。而且echo是返回void的赵刑,并不返回值般此,所以不能使用它來賦值牵现。
<?php
$a = echo("words"); // 錯誤瞎疼!不能用來賦值
echo "words"; // 55nav
echo ("words"); // 55nav
echo ("apple","bear"); //發(fā)生錯誤,有括號不能傳遞多個參數(shù)
echo "alice","bill","cart", "daring"; // 不用括號的時候可以用逗號隔開多個值喜喂, 會輸出alicebillcartdaring 不管是否換行竿裂,最終顯示都是為一行
$fistname="alice";
echo "$fistname com"; // 如果 $firstname = "alice", 則會輸出 alice com.
echo '$firstname com'; // 由于使用單引號腻异,所以不會輸出$firstname的值,而是輸出 $firstname com
?>
2.print_r 函數(shù)
print_r函數(shù)打印關(guān)于變量的易于理解的信息给赞。
如果變量是string , integer or float , 將會直接輸出其值片迅,如果變量是一個數(shù)組皆辽,則會輸出一個格式化后的數(shù)組驱闷,便于閱讀空另,也就是有key和value對應(yīng)的那種格式。對于object對象類同摄杂。print_r有兩個參數(shù)匙姜,第一個是變量氮昧,第二個可設(shè)為true袖肥,如果設(shè)為true椎组,則會返回字符串寸癌,否則返回布爾值TRUE蒸苇。
<?php
print_r($arr);//直接打印數(shù)組$arr
$a="alice";
$c=print_r($a);
echo $c;//$c的值是TRUE
$c=print_r($a,true);
echo $c; //$c的值是字符串a(chǎn)lice
?>
3.var_dump函數(shù)
功能: 輸出變量的內(nèi)容吮旅、類型或字符串的內(nèi)容、類型槽驶、長度鸳兽。常用來調(diào)試贸铜。
var_dump($a);
二聂受、PHP第一種特殊類型—資源
資源(resource):資源是由專門的函數(shù)來建立和使用的棍鳖,例如打開文件渡处、數(shù)據(jù)連接医瘫、圖形畫布旧困。我們可以對資源進行操作(創(chuàng)建吼具、使用和釋放)拗盒。任何資源怖竭,在不需要的時候應(yīng)該被及時釋放。如果我們忘記了釋放資源陡蝇,系統(tǒng)自動啟用垃圾回收機制痊臭,在頁面執(zhí)行完畢之后回收資源,以避免內(nèi)存被消耗殆盡登夫。
<?php
$file=fopen("f.txt","r"); //打開文件
$con=mysql_connect("localhost","root","root"); //連接數(shù)據(jù)庫
$img=imagecreate(100,100);//圖形畫布
?>
//偷窺一個小文件广匙,假設(shè)服務(wù)器上有個文件為“f.txt”,這時候悼嫉,我們就需要用到資源這種特殊的數(shù)據(jù)類型艇潭。
<?php
//首先采用“fopen”函數(shù)打開文件,得到返回值的就是資源類型。
$file_handle = fopen("/data/webroot/resource/php/f.txt","r");
if ($file_handle){
//接著采用while循環(huán)(后面語言結(jié)構(gòu)語句中的循環(huán)結(jié)構(gòu)會詳細介紹)一行行地讀取文件蹋凝,然后輸出每行的文字
while (!feof($file_handle)) { //判斷是否到最后一行
$line = fgets($file_handle); //讀取一行文本
echo $line; //輸出一行文本
echo "<br/>"; //換行
}
}
fclose($file_handle);//關(guān)閉文件?>
file handle叫做文件句柄鳍寂。在文件I/O中捍壤,要從一個文件讀取數(shù)據(jù)睹逃,應(yīng)用程序首先要調(diào)用操作系統(tǒng)函數(shù)并傳送文件名翼闹,并選一個到該文件的路徑來打開文件坚弱。該函數(shù)取回一個順序號,即文件句柄(file handle),該文件句柄對于打開的文件是唯一的識別依據(jù)。要從文件中讀取一塊數(shù)據(jù)埋市,應(yīng)用程序需要調(diào)用函數(shù)ReadFile污茵,并將文件句柄在內(nèi)存中的地址和要拷貝的字節(jié)數(shù)傳送給操作系統(tǒng)樱报。當(dāng)完成任務(wù)后盗飒,再通過調(diào)用系統(tǒng)函數(shù)來關(guān)閉該文件章喉。
fopen() 函數(shù)打開文件或者 URL部蛇。
如果打開失敗巷查,本函數(shù)返回 FALSE岛请。
語法:fopen(filename,mode,include_path,context)
- filename必需。規(guī)定要打開的文件或 URL后室。
- mode必需岸霹。規(guī)定要求到該文件/流的訪問類型痛黎【艘荩可能的值見下表水醋。
- include_path可選拄踪。如果也需要在 include_path 中檢索文件的話撮弧,可以將該參數(shù)設(shè)為 1 或 TRUE。
- context可選贸辈。規(guī)定文件句柄的環(huán)境擎淤。Context 是可以修改流的行為的一套選項。
mode 參數(shù)的可能的值:
"r+"讀寫方式打開啼染,將文件指針指向文件頭。
"w"寫入方式打開,將文件指針指向文件頭并將文件大小截為零蚤霞。如果文件不存在則嘗試創(chuàng)建之。
"w+"讀寫方式打開,將文件指針指向文件頭并將文件大小截為零贪绘。如果文件不存在則嘗試創(chuàng)建之硬耍。
"a"寫入方式打開坯认,將文件指針指向文件末尾劳吠。如果文件不存在則嘗試創(chuàng)建之议慰。
"a+"讀寫方式打開洽糟,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。
"x"創(chuàng)建并以寫入方式打開吠裆,將文件指針指向文件頭祝旷。如果文件已存在柄冲,則 fopen() 調(diào)用失敗并返回 FALSE,并生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創(chuàng)建之。
這和給底層的 open(2) 系統(tǒng)調(diào)用指定 O_EXCL|O_CREAT 標記是等價的闸餐。
此選項被 PHP 4.3.2 以及以后的版本所支持,僅能用于本地文件地淀。
"x+"創(chuàng)建并以讀寫方式打開,將文件指針指向文件頭金赦。如果文件已存在,則 fopen() 調(diào)用失敗并返回 FALSE亥曹,并生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創(chuàng)建之厕鹃。
這和給底層的 open(2) 系統(tǒng)調(diào)用指定 O_EXCL|O_CREAT 標記是等價的。
此選項被 PHP 4.3.2 以及以后的版本所支持忆矛,僅能用于本地文件瞳腌。
注釋:不同的操作系統(tǒng)家族具有不同的行結(jié)束習(xí)慣挑宠。當(dāng)寫入一個文本文件并想插入一個新行時,需要使用符合操作系統(tǒng)的行結(jié)束符號÷偻基于 Unix 的系統(tǒng)使用 \n 作為行結(jié)束字符仑濒,基于 Windows 的系統(tǒng)使用 \r\n 作為行結(jié)束字符,基于 Macintosh 的系統(tǒng)使用 \r 作為行結(jié)束字符偷遗。 如果寫入文件時使用了錯誤的行結(jié)束符號墩瞳,則其它應(yīng)用程序打開這些文件時可能會表現(xiàn)得很怪異。
Windows 下提供了一個文本轉(zhuǎn)換標記("t")可以透明地將 \n 轉(zhuǎn)換為 \r\n氏豌。與此對應(yīng)還可以使用 "b" 來強制使用二進制模式喉酌,這樣就不會轉(zhuǎn)換數(shù)據(jù)。要使用這些標記泵喘,要么用 "b" 或者用 "t" 作為 mode 參數(shù)的最后一個字符泪电。
默認的轉(zhuǎn)換模式依賴于 SAPI 和所使用的 PHP 版本,因此為了便于移植鼓勵總是指定恰當(dāng)?shù)臉擞浖推獭H绻遣僮骷兾谋疚募⒃谀_本中使用了
\n 作為行結(jié)束符相速,但還要期望這些文件可以被其它應(yīng)用程序例如 Notepad 讀取,則在 mode 中使用 "t"鲜锚。在所有其它情況下使用
"b"突诬。
在操作二進制文件時如果沒有指定 "b" 標記,可能會碰到一些奇怪的問題芜繁,包括壞掉的圖片文件以及關(guān)于 \r\n 字符的奇怪問題旺隙。
注釋:為移植性考慮,強烈建議在用 fopen() 打開文件時總是使用 "b" 標記骏令。
注釋:再一次蔬捷,為移植性考慮,強烈建議你重寫那些依賴于 "t" 模式的代碼使其使用正確的行結(jié)束符并改成 "b" 模式榔袋。```
feof(fp) 函數(shù)檢測是否已到達文件末尾 (eof)周拐。
有兩個返回值:如果遇到文件結(jié)束,函數(shù)feof(fp)的值為非零值凰兑,否則為0速妖。
fgets() 函數(shù)從文件指針中讀取一行。
語法:fgets(file,length)
file必需聪黎。規(guī)定要讀取的文件。
length可選。規(guī)定要讀取的字節(jié)數(shù)稿饰。默認是 1024 字節(jié)锦秒。
從*file*指向的文件中讀取一行并返回長度最多為*length*- 1 字節(jié)的字符串。碰到換行符(包括在返回值中)喉镰、EOF 或者已經(jīng)讀取了*length*- 1 字節(jié)后停止(要看先碰到那一種情況)旅择。如果沒有指定*length*,則默認為 1K侣姆,或者說 1024 字節(jié)生真。若失敗,則返回 false捺宗。
注釋:*length*參數(shù)從 PHP 4.2.0 起成為可選項柱蟀,如果忽略,則行的長度被假定為 1024 字節(jié)蚜厉。從 PHP 4.3 開始长已,忽略掉*length*將繼續(xù)從流中讀取數(shù)據(jù)直到行結(jié)束。如果文件中的大多數(shù)行都大于 8 KB昼牛,則在腳本中指定最大行的長度在利用資源上更為有效术瓮。
注釋:從 PHP 4.3 開始本函數(shù)可以安全用于二進制文件。早期的版本則不行贰健。
注釋:如果碰到 PHP 在讀取文件時不能識別 Macintosh 文件的行結(jié)束符胞四,可以激活 auto_detect_line_endings 運行時配置選項。
fgetss() 函數(shù)從打開的文件中讀取一行并過濾掉 HTML 和 PHP 標記伶椿。與[fgets()](http://www.w3school.com.cn/php/func_filesystem_fgets.asp)相同辜伟,不同的是 fgetss 嘗試從讀取的文本中去掉任何 HTML 和 PHP 標記。
語法:fgetss(*file*,*length*,*tags*)
*file*必需悬垃。規(guī)定要讀取的文件游昼。
*length*可選。規(guī)定要讀取的字節(jié)數(shù)尝蠕。默認是 1024 字節(jié)烘豌。該參數(shù)在 PHP 5 之前是必需的。
*tags*可選看彼。規(guī)定不會被刪除的標簽廊佩。
可以用可選的第三個參數(shù)*tags*指定哪些標記不被去掉。若失敗靖榕,則返回 false标锄。
<?php
$file = fopen("test.htm","r");
echo fgetss($file,1024,"<p>,<b>");
fclose($file);
?>```
fclose() 函數(shù)關(guān)閉一個打開文件。
語法:fclose(file)
file必需茁计。規(guī)定要關(guān)閉的文件料皇。
file參數(shù)是一個文件指針。fclose() 函數(shù)關(guān)閉該指針指向的文件。如果成功則返回 true践剂,否則返回 false鬼譬。文件指針必須有效,并且是通過 fopen() 或 fsockopen() 成功打開的逊脯。
三优质、PHP第二種特殊類型—空類型
NULL(NULL):NULL是空類型,對大小寫不敏感军洼,NULL類型只有一個取值巩螃,表示一個變量沒有值,當(dāng)被賦值為NULL匕争,或者尚未被賦值避乏,或者被unset(),這三種情況下變量被認為為NULL汗捡。
<?php
error_reporting(0); //禁止顯示PHP警告提示
$var; //為變量未賦值
var_dump($var); //NULL
$var1=null; //將null賦值給變量$var1
var_dump($var1); //NULL
$var2=NULL; //將NULL賦值給變量$var2
var_dump( $var2); //NULL
$var3 = "節(jié)日快樂淑际!";
unset($var3); //將變量$var3注銷定義
var_dump($var3); //NULL
?>