學(xué)習(xí)PHP與mySQL的辛酸史(一)PHP基本語法

此文記錄自己學(xué)習(xí)PHP和mySQL的過程。之前在網(wǎng)上簡單地學(xué)習(xí)了一下這兩門語言泥张,并且自己編寫了PHP呵恢,可以正常連接mySQL,也可以插入數(shù)據(jù)圾结。但是自己總覺得還是不太清晰瑰剃。所以借了本O'REILLY的PHP,MySQL,JavaScript, & CSS。希望能夠理清一下編程思路筝野,學(xué)得更加通透些晌姚,對自己以后編寫項目有所幫助粤剧。

首先,來了解一下挥唠,這幾門語言主要負責(zé)些什么抵恋。PHP是負責(zé)主要的在服務(wù)器上的工作,MySQL是負責(zé)所有的數(shù)據(jù)宝磨,CSS和JavaScript則是管理網(wǎng)頁的展現(xiàn)弧关。然而JavaScript也能與PHP進行通信,無論什么時候需要更新一些服務(wù)器上的或是頁面上的信息唤锉。


PHP

PHP是相對松散的語言世囊。也就是它的變量類型不需要在使用前被聲明。字符串內(nèi)的數(shù)字可以被自動轉(zhuǎn)換為數(shù)字類型窿祥。

PHP是用 ‘$' 來定義變量的株憾。比如:$ my_counter = 1;

使用空格(whitespace)讓代碼變得更加整潔清晰晒衩,當(dāng)自己回頭再去查看的時候也比較容易理解嗤瞎。同時也幫助其他的開發(fā)人員去維護你的代碼。如果需要聲明一個數(shù)字變量听系,無論是Int類型還是Float類型都可以直接聲明贝奇。

例如:$ count = 17;$ count = 17.5靠胜;

PHP的變量起名規(guī)則

1. 以字母開始或 ‘_’(underscore)掉瞳;

2. 只能包含a-z, A-Z髓帽, 0-9 和 ‘_’ (underscore)菠赚;

3. 不能包含空格,如果一定包含兩個單詞郑藏,一定用 ‘_’ (underscore)來分開衡查;

4. 對大小寫是sensitive的,$High_Score與$high_score是不同的變量必盖。

PHP的常量(constants)

1. 聲明一個常量不需要用($)拌牲,一般以字符或下劃線開頭

2. 只能用define方法來賦值給常量 define ( 'TIREPRICE' , 100 ) ;

3.?在腳本中無法改變該值。

4.?與變量不同歌粥,常量貫穿整個腳本是自動全局的塌忽。

5. 盡量不要前后都使用(_)來起變量名。

設(shè)置常量失驶,使用 define() 函數(shù) - 它使用三個參數(shù):

首個參數(shù)定義常量的名稱? ? 第二個參數(shù)定義常量值? ? 可選的第三個參數(shù)規(guī)定常量名是否對大小寫不敏感土居。默認是 false。

簡短風(fēng)格 short style : $tireqty?非常方便,但是需要將register_globals配置選項置為on擦耀,由于安全性原因棉圈,該選項默認為off。

中等風(fēng)格?Medium style: $_POST[ ' tireqty ' ]?推薦使用

冗長風(fēng)格?Long style $HTTP_POST_VARS[ ' tireqty' ]?已經(jīng)被棄用

我們通常建議使用中等風(fēng)格來聲明變量眷蜓。如果你建立一個簡短風(fēng)格分瘾,然后把中等風(fēng)格賦值給它沒有安全問題,反而更容易被使用吁系。$tireqty = $_POST [ 'tireqty' ] ;


PHP的字符串規(guī)則

單引號是不會把文字里中以$開頭的字符串作為變量的德召。如果要把它當(dāng)做變量來看待那就需要用雙引號。如果字符串內(nèi)要使用單引號的話汽纤,不能直接使用上岗,這個和JavaScript一樣。需要轉(zhuǎn)義字符用“\”來解決單引號問題蕴坪。此外液茎,\t,\n辞嗡,\r在雙引號里才有效。

PHP還提供了多行數(shù)列的操作符“<<<”滞造,優(yōu)點是輸出大段HTML方便续室,不需要轉(zhuǎn)義,而且可以引用變量谒养⊥φ“<<<”之后跟隨任意你自己喜歡的名字(自定義分界符),并以此未結(jié)束买窟。之間文字打回車不會被顯示丰泊。里面的變量將可以使用,如果不需要出現(xiàn)變量可以用 “.”來連接始绍。此時就不會被解讀為變量了瞳购,而是正常輸出。

在使用(<<<)時亏推,還需注意的一點是学赛,標(biāo)識符結(jié)束符串(如:END)需要獨占一行,前后都不許再有內(nèi)容包括空格吞杭,否則這個PHP文件就相當(dāng)于廢了盏浇。


echo和print命令的區(qū)別

這兩個命令是十分相似的。但是print是一個函數(shù)方法需要用到一個參數(shù)芽狗,然而echoPHP語言的結(jié)構(gòu)绢掰。在普通的文字輸出上,echo要比print稍微快一點,因為它不是一個函數(shù)不需要設(shè)置一個返回值滴劲。同時攻晒,因為echo它不是一個函數(shù),所以不能被用于大量復(fù)雜的表達式哑芹,但是print卻可以炎辨。


PHP的函數(shù)方法

Function是用來區(qū)分出為了實現(xiàn)不同特殊功能的代碼。比如這個代碼打印三行字聪姿,但是如果我要打印十幾個的話碴萧,就需要不停復(fù)制黏貼這些代碼,無疑是讓代碼變得更為復(fù)雜和龐大末购。但是用了function就只需要使用一次函數(shù)就可以打印十幾次破喻。它是代碼變得更簡潔并且可讀性更高。聲明function的方式與JavaScript一樣盟榴。

比如:

function longdate($timestamp){?

????return date("l F jS Y"曹质,$timestamp);

}


PHP的變量作用域(Variable Scope)

在PHP語言中擎场,你可以決定變量的作用域羽德,比如,只在函數(shù)里面使用迅办,或者是全域范圍的宅静,任何范圍都能被使用。

Local Variables(本地變量)是指變量被建立只被允許在函數(shù)中調(diào)用站欺。它是零時性的儲存姨夹,一旦函數(shù)完成也就不存在了。

Global Variables(全局變量)有些時候我們也需要全局變量矾策,因為你希望你所有的代碼都能調(diào)用到它磷账。當(dāng)需要聲明全局變量時,我們需要使用關(guān)鍵字global贾虽。不建議使用全局變量逃糟,實在沒有其他方法時,可以使用蓬豁。因為一般程序是被打碎成多個小零件履磨,這樣數(shù)據(jù)發(fā)生問題也是一些小問題容易被維護。但是如果上千行的代碼程序被發(fā)現(xiàn)你的全局變量出現(xiàn)了問題。那么將需要花非常大的精力與時間去維護它。同時携悯,建議在為全局變量起名時很洋,最好使用大寫字母。

Static Variables(靜態(tài)變量)當(dāng)你使用一個變量希望它只能在函數(shù)中被調(diào)用收苏,但是你也希望它能再下一次使用這個函數(shù)時琅捏,值不會被恢復(fù)到原來的值逢渔。這時我們就需要用到靜態(tài)變量聊品。同時需要注意的是飞蹂,靜態(tài)變量不能給予一個計算公式或者函數(shù),必須賦一個實際的值翻屈。

比如:

static $int = 0; //Allowed

static $int = 1+2; //Disallowed (will produce a Parse error)

static $int = sqrt(144); //Disallowed

Superglobal Variables(超級全局變量)PHP 中的許多預(yù)定義變量都是“超全局的”陈哑,這意味著它們在一個腳本的全部作用域中都可用。

這些超全局變量是:

$GLOBALS

$_SERVER

$_REQUEST

$_POST

$_GET

$_FILES

$_ENV

$_COOKIE

$_SESSION

這些超級全局變量名都是使用_下劃線和大寫字母伸眶,所以在起名時應(yīng)該避免重復(fù)以造成程序混亂惊窖。


PHP表達式(Expression)

布爾表達式,值得注意的一點是厘贼,在PHP中界酒,TRUE的值為“1”,而FALSE的值為NULL嘴秸,或者是空值毁欣。因為在一些語言里FALSE被定義為0或者-1。

此外岳掐,PHP會按照字面上的值(literals)理解去判斷變量類型凭疮。

比如:

$myname = "Brian";

$myage = 37;

echo "a: " . 73? ? ? ? ? ? ?. "<br/>"; //Numeric literal

echo "b: " . "Hello"? ? ? . "<br/>"; //String literal

echo "c: " . FALSE? ? ? . "<br/>"; //Constant literal

echo "d: " . $myname? . "<br/>"; //Variable string literal

echo "e: " . $myage? ? ?. "<br/>"; //Variable numeric literal

結(jié)果是:

a: 73 b: Hello c:? ? ? ? d: Brian? e: 37

PHP運算符(operators)

PHP提供了大量有用的運算符,比如計算串述,字符串和邏輯的運算符哭尝。“.”運算符用來連接字符串剖煌。

PHP 邏輯運算符(logical)

or”返回值是布爾值。如果 $x 和 $y 至少有一個為 true逝淹,則返回 true耕姊。

xor”返回值是布爾值。條件中不是A就是B栅葡。如果A就返回True茉兰,如果是B也返回True。但如果是A和B就返回False欣簇,如果即不是A也不是B就返回False规脸。所以條件符合的有且僅有一個為 true,則返回 true熊咽。

PHP 結(jié)合性運算符(associativity)

這類型的運算符是從右到左計算莫鸭。

Operator? ????????????????????????????????????????Description? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Example

NEW? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Create a new object

!? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Logical NOT

~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Bitwise NOT

++? ?--? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Increment and decrement

+ -? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Unary plus and negation

(int)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Cast to an integer? ? ? ? ? ? ? ? ? ? ? ? $c = (int) ($a / $b);

(double)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Cast to a float

(string)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Cast to a string

(array)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Cast to an array

(object)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Cast to an object

@? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Inhibit error reporting? ? ? ? ??

@是為了抑制錯誤顯示,讓用戶看不到横殴,提升用戶體驗被因。注意:只是抑制錯誤,但是錯誤還是存在的。

=? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Assignment


PHP條件表達式(Conditionals)

條件表達式是動態(tài)頁面的核心梨与,它能夠簡單地根據(jù)不同的條件創(chuàng)造出不同的頁面結(jié)果堕花。有三種表達方法:ifswitch粥鞋?(三目運算符)缘挽。這個和JavaScript都是一樣的。


PHP循環(huán)(Looping)

能快速地周而復(fù)始地工作直到事情發(fā)生為止呻粹。循環(huán)方式有:while壕曼,do……whilefor。


PHP的函數(shù)與對象

函數(shù)的好處:

1. 簡潔

2. 減少語法和其他編寫程序的錯誤

3. 減少程序文件的加載時間

4. 同時減少執(zhí)行時間尚猿,因為每一個函數(shù)都僅僅被解析一次窝稿,無論它將被調(diào)用多少次。

5. 函數(shù)接受參數(shù)凿掂,這樣能夠被普遍使用伴榔,也同時能被特殊的情況使用。

PHP有上百種已經(jīng)編寫好的函數(shù)庄萎,使它成為一個豐富的語言踪少。


Includerequire

require()的性能與include()相類似,都是包括并運行指定文件糠涛。不同之處在于:對include()語句來說援奢,在執(zhí)行文件時每次都要進行讀取和評估;而對于require()來說忍捡,文件只處理一次集漾。這就意味著如果可能執(zhí)行多次的代碼,則使用require()效率比較高砸脊。另外一方面具篇,如果每次執(zhí)行代碼時是讀取不同的文件,或者有通過一組文件迭代的循環(huán)凌埂,就使用include()語句驱显。

require的使用方法如:require("myfile.php"),這個語句通常放在PHP腳本程序的最前面瞳抓。PHP程序在執(zhí)行前埃疫,就會先讀入require()語句所引入的文件,使它變成PHP腳本文件的一部分孩哑。include使用方法和require一樣如:include("myfile.php")栓霜,而這個語句一般是放在流程控制的處理區(qū)段中。PHP腳本文件在讀到include()語句時横蜒,才將它包含的文件讀取進來叙淌。這種方式秤掌,可以把程式執(zhí)行時的流程簡單化。

include在用到時加載? ?require在一開始就加載

include/require_once后綴表示已加載的不加載

PHP系統(tǒng)在加載PHP程序時有一個偽編譯過程鹰霍,可使程序運行速度加快闻鉴。但include的文檔仍為解釋執(zhí)行。include的文件中出錯了茂洒,主程序繼續(xù)往下執(zhí)行孟岛,require的文件出錯了,主程序也停了督勺,所以包含的文件出錯對系統(tǒng)影響不大的話(如界頁面文件)就用include渠羞,否則用require

require()include()語句是語言結(jié)構(gòu)智哀,不是真正的函數(shù)次询,可以像php中其他的語言結(jié)構(gòu)一樣,例如echo()可以使用echo("ab")形式瓷叫,也可以使用echo "abc"形式輸出字符串a(chǎn)bc屯吊。require()include()語句也可以不加圓括號而直接加參數(shù)。

include_once()require_once()語句也是在腳本執(zhí)行期間包括運行指定文件摹菠。此行為和include()語句及require()類似盒卸,使用方法也一樣。唯一區(qū)別是如果該文件中的代碼已經(jīng)被包括了次氨,則不會再次包括蔽介。這兩個語句應(yīng)該用于在腳本執(zhí)行期間,同一個文件有可能被包括超過一次的情況下煮寡,確保它只被包括一次虹蓄,以避免函數(shù)重定義以及變量重新賦值等問題。

function_exists("function name")是判斷這個函數(shù)是否有效幸撕。


對象Object

面對對象(object-oriented programming OOP)讓函數(shù)提升到新的水平薇组。當(dāng)一些方法要被重用,那么就可以考慮把這些方法和數(shù)據(jù)放入到對象中去杈帐。一起想想看一個社交網(wǎng)站,它有很多部分組成专钉。一個組成部分是要管理所有的用戶函數(shù)挑童。比如讓新用戶注冊,和讓存在的用戶更改他們的信息跃须。一般來說站叼,我們會建立一些函數(shù)去管理這些并且請求MySQL數(shù)據(jù)庫去記錄所有的用戶。而我們知道對象后菇民,完全可以建立一個名為User的對象尽楔,并且把所有的數(shù)據(jù)與方法放入到這個對象中里投储。那么無論什么時候當(dāng)需要去操作一個用戶的數(shù)據(jù)時,我們就可以簡單地建立一個和User類有關(guān)的對象阔馋。對象中的數(shù)據(jù)被稱為屬性玛荞,對象中的函數(shù)被稱為方法。如果你發(fā)現(xiàn)需要類外一個類呕寝,這個類與User類很相似勋眯,但有些不同,這時我們就需要繼承User類下梢。那么原來的User類就被成為父類(superclass)客蹋,而新的類就被成為子類(subclass/derived class)。

聲明一個類(Declaring a Class

在使用一個對象之前孽江,必須用關(guān)鍵字class定義一個類讶坯。定義一個類包含類名(它是大小寫sensitive的),類的屬性岗屏,和類的方法辆琅。可以使用 '->' 來給變量/屬性進行賦值担汤。這是變量不需要用$進行聲明涎跨。

構(gòu)造函數(shù)(Constructors)

在類里面帶有參數(shù)并且與類名相同的方法被稱為構(gòu)造函數(shù)。現(xiàn)在很多使用__construct來命名構(gòu)造函數(shù)崭歧。當(dāng)不再需要這個對象的時候隅很,就需要調(diào)用destructor,來釋放這個對象所占的內(nèi)存率碾。但是destructor不需要設(shè)計叔营,因為系統(tǒng)會自動釋放特定的內(nèi)存。除非你用到了動態(tài)內(nèi)存所宰,那么你就是要自己設(shè)計一個destructor告訴系統(tǒng)釋放哪些內(nèi)存绒尊。

聲明一個方法(Methods)

聲明一個方法與聲明一個函數(shù)非常類似,但還是有少許不同仔粥。比如婴谱,方法的命名開頭跟隨兩個下劃線(__)。$this是指代現(xiàn)在這個對象躯泰,并返回這個對象的屬性值谭羔。

靜態(tài)方法(static methods)

在php編程中,static關(guān)鍵字聲明一個屬性或方法是和類相關(guān)的麦向,而不是和類的某個特定的實例相關(guān)瘟裸,因此,這類屬性或方法也稱為“類屬性”或“類方法”

如果訪問控制權(quán)限允許诵竭,可不必創(chuàng)建該類對象而直接使用類名加兩個冒號“::”調(diào)用话告。

<?php

User::pwd_string();

class User

{

? ? static function pwd_string()

????{

????????echo "Please enter your password";

????}

}

?>

聲明屬性(Declaring Properties)

聲明屬性不是必須在類里的兼搏,類里沒有屬性和方法但仍然是合法的。但是為了幫助自己和其他人更好地理解與維護代碼沙郭,還是建議把屬性的聲明放入到類里佛呻。

<?php

$object1 = new User();

$object1->name = "Alice";

echo $object1->name;

class User {}

?>

聲明一個常量(Declaring Constant)

定義一個常量需要在常量名前加const。常量名一般使用大寫字母棠绘,使他們變得更為突出件相。當(dāng)常量/變量使用關(guān)鍵字self兩個冒號(::),就能夠被直接引用氧苍。

屬性和方法的作用域(Property and Method Scope)

PHP提供了3個關(guān)鍵字來控制屬性和方法的作用域夜矗。

1. public —— 這些屬性是用varpublic關(guān)鍵字聲明的。pubilic與var是能夠被互換的让虐,雖然這是不被贊成的紊撕。當(dāng)外部的代碼要調(diào)用這個屬性,或者拓展類需要繼承它赡突,我們就應(yīng)該用public來聲明对扶。

2. protected —— 這些屬性和方法只能被對象中的方法和任何子類引用。當(dāng)不想被外部代碼來調(diào)用惭缰,但是拓展類希望繼承它浪南,我們就可以用protected來聲明。

3. private —— 這些成員僅能被同一個類引用漱受,子類也是不能引用的络凿。當(dāng)我們不想這些成員被外部任何代碼方法或者類來調(diào)用,就應(yīng)該使用private來進行聲明昂羡。

靜態(tài)屬性和方法(static properties and methods)

靜態(tài)方法可以被直接調(diào)用絮记,而屬性是不可以的。屬性的調(diào)用可以使用關(guān)鍵字self和雙冒號的方法來調(diào)用類內(nèi)部的靜態(tài)屬性虐先。

繼承(Inheritance)

任何類都能被繼承怨愤。減少代碼的重復(fù)性,只要改變一小部分蛹批,調(diào)整不同的地方撰洗。使用關(guān)鍵字extends進行拓展聲明。


PHP數(shù)組(Arrays)

is_array($array_name)返回布爾值腐芍,可以判斷這個數(shù)組是否是有效的差导。

sort($array_name, SORT_NUMERIC/STRING)通過數(shù)字和字符串從小到大排序。

rsort($array_name, SORT_NUMERIC/STRING)通過數(shù)字和字符串從大到小排序甸赃。

shuffle($array_name)打亂數(shù)組柿汛,隨機排序冗酿。

explode(' ',"string")這個是十分有用的方法埠对,他會把輸入的string络断,通過要求分隔成單個元素然后放入數(shù)組中。第一個參數(shù)是通過什么來分割项玛,第二個是放入的string貌笨。

extract()這個方法可以很容易地把數(shù)組變成鍵值對的形式。經(jīng)辰缶冢可以用于$_POST$_GET锥惋。

extract(array,extract_rules,prefix)有三個參數(shù),

第一個array必需开伏。規(guī)定要使用的輸入膀跌。

第二個extract_rules可選。extract() 函數(shù)將檢查每個鍵名是否為合法的變量名固灵,同時也檢查和符號表中的變量名是否沖突捅伤。對非法、數(shù)字和沖突的鍵名的處理將根據(jù)此參數(shù)決定巫玻〈砸洌可以是以下值之一:

可能的值:

EXTR_OVERWRITE - 默認。如果有沖突仍秤,則覆蓋已有的變量熄诡。

EXTR_SKIP - 如果有沖突,不覆蓋已有的變量诗力。(忽略數(shù)組中同名的元素)

EXTR_PREFIX_SAME - 如果有沖突凰浮,在變量名前加上前綴 prefix。自 PHP 4.0.5 起姜骡,這也包括了對數(shù)字索引的處理导坟。

EXTR_PREFIX_ALL - 給所有變量名加上前綴 prefix(第三個參數(shù))。

EXTR_PREFIX_INVALID - 僅在非法或數(shù)字變量名前加上前綴 prefix圈澈。本標(biāo)記是 PHP 4.0.5 新加的惫周。

EXTR_IF_EXISTS - 僅在當(dāng)前符號表中已有同名變量時,覆蓋它們的值康栈。其它的都不處理递递。可以用在已經(jīng)定義了一組合法的變量啥么,然后要從一個數(shù)組例如 $_REQUEST 中提取值覆蓋這些變量的場合登舞。本標(biāo)記是 PHP 4.2.0 新加的。

EXTR_PREFIX_IF_EXISTS - 僅在當(dāng)前符號表中已有同名變量時悬荣,建立附加了前綴的變量名菠秒,其它的都不處理。本標(biāo)記是 PHP 4.2.0 新加的。

EXTR_REFS - 將變量作為引用提取践叠。這有力地表明了導(dǎo)入的變量仍然引用了 var_array 參數(shù)的值言缤。可以單獨使用這個標(biāo)志或者在 extract_type 中用 OR 與其它任何標(biāo)志結(jié)合使用禁灼。本標(biāo)記是 PHP 4.3.0 新加的管挟。

第三個參數(shù),prefix可選弄捕。請注意 prefix 僅在 extract_type 的值是 EXTR_PREFIX_SAME僻孝,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 時需要守谓。如果附加了前綴后的結(jié)果不是合法的變量名穿铆,將不會導(dǎo)入到符號表中。前綴和數(shù)組鍵名之間會自動加上一個下劃線斋荞。

代碼如下:

<?php

????$a = 'Original';?

????$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");?

????extract($my_array);?

????echo "\$a = $a; \$b = $b; \$c = $c";?

?>?

輸出:?

$a = Cat;?

$b = Dog;?

$c = Horse?

使用全部參數(shù):?

代碼如下:

<?php

????$a = 'Original';?

????$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");?

????extract($my_array, EXTR_PREFIX_SAME, 'dup');?

????echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;";?????

?>?

輸出:?

$a = Original;?

$b = Dog;?

$c = Horse;?

$dup_a = Cat;?

在action.php中只要使用extract()函數(shù)將$_POST全局數(shù)據(jù)解開:?

action.php?

代碼如下:

<?php

????extract($_POST);? //相當(dāng)于$username = $_POST['username'];? //$password = $_POST['password'];?

?>?

compact(var1,var2...)函數(shù)創(chuàng)建一個由參數(shù)所帶變量組成的數(shù)組悴务。如果參數(shù)中存在數(shù)組,該數(shù)組中變量的值也會被獲取譬猫。

本函數(shù)返回的數(shù)組是一個關(guān)聯(lián)數(shù)組讯檐,鍵名為函數(shù)的參數(shù),鍵值為參數(shù)中變量的值染服。

本函數(shù)執(zhí)行的行為與extract()正好相反别洪。

例子 1

使用不匹配變量的字符串,以及一個變量名數(shù)組:

<?php

????$firstname = "Bill";

????$lastname = "Gates";

????$age = "60";

????$name = array("firstname", "lastname");

????$result =compact($name, "location", "age");

????print_r($result);

?>

輸出結(jié)果:

Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )

其他相關(guān)的方法:

current()?- 返回數(shù)組中的當(dāng)前元素的值

end()?- 將內(nèi)部指針指向數(shù)組中的最后一個元素柳刮,并輸出

next()?- 將內(nèi)部指針指向數(shù)組中的下一個元素挖垛,并輸出

prev()?- 將內(nèi)部指針指向數(shù)組中的上一個元素,并輸出

each()?- 返回當(dāng)前元素的鍵名和鍵值秉颗,并將內(nèi)部指針向前移動


printf(arg1,arg2,agr++)函數(shù)輸出格式化的字符串痢毒。arg1arg2蚕甥、arg++?參數(shù)將被插入到主字符串中的百分號(%)符號處哪替。該函數(shù)是逐步執(zhí)行的。在第一個 % 符號處菇怀,插入?arg1凭舶,在第二個 % 符號處,插入?arg2爱沟,依此類推帅霜。

參數(shù)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?描述

format? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??必需。規(guī)定字符串以及如何格式化其中的變量呼伸。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 可能的格式值:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%% - 返回一個百分號 %

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%b - 二進制數(shù)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%c - ASCII 值對應(yīng)的字符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%d - 包含正負號的十進制數(shù)(負數(shù)身冀、0、正數(shù))

????????????????????????????????????????????????????????????????????????????????????????????????????%e - 使用小寫的科學(xué)計數(shù)法(例如 1.2e+2)

????????????????????????????????????????????????????????????????????????????????????????????????????%E - 使用大寫的科學(xué)計數(shù)法(例如 1.2E+2)

????????????????????????????????????????????????????????????????????????????????????????????????????%u - 不包含正負號的十進制數(shù)(大于等于 0)

????????????????????????????????????????????????????????????????????????????????????????????????????%f - 浮點數(shù)(本地設(shè)置)

????????????????????????????????????????????????????????????????????????????????????????????????????%F - 浮點數(shù)(非本地設(shè)置)

????????????????????????????????????????????????????????????????????????????????????????????????????%g - 較短的 %e 和 %f

????????????????????????????????????????????????????????????????????????????????????????????????????%G - 較短的 %E 和 %f

????????????????????????????????????????????????????????????????????????????????????????????????????%o - 八進制數(shù)

????????????????????????????????????????????????????????????????????????????????????????????????????%s - 字符串

????????????????????????????????????????????????????????????????????????????????????????????????????%x - 十六進制數(shù)(小寫字母)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %X - 十六進制數(shù)(大寫字母)

????????????????????????????????????????????????????????????????????????????????????????????????????附加的格式值。必需放置在 % 和字母之間(例如 %.2f):

????????????????????????????????????????????????????????????????????????????????????????????????????+ (在數(shù)字前面加上 + 或 - 來定義數(shù)字的正負性搂根。默認地蝶怔,只有負數(shù)做標(biāo)記,正數(shù)不做標(biāo)記)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ' (規(guī)定使用什么作為填充兄墅,默認是空格。它必須與寬度指定器一起使用澳叉。)

????????????????????????????????????????????????????????????????????????????????????????????????????- (左調(diào)整變量值)

????????????????????????????????????????????????????????????????????????????????????????????????????[0-9] (規(guī)定變量值的最小寬度)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.[0-9] (規(guī)定小數(shù)位數(shù)或最大字符串長度)

????????????????????????????????????????????????????????????????????????????????????????????????????注釋:如果使用多個上述的格式值隙咸,它們必須按照上面的順序進行使用,不能打亂成洗。

arg1? ? ????????????????????????????????????????????????????????????????????????????????????????必需五督。規(guī)定插到?format?字符串中第一個 % 符號處的參數(shù)。

arg2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 必需瓶殃。規(guī)定插到?format?字符串中第二個 % 符號處的參數(shù)充包。

arg++? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?可選。規(guī)定插到?format?字符串中第三遥椿、四等等 % 符號處的參數(shù)基矮。

PHP printf() 函數(shù)


附錄:

syntax? ? ? ? ? ? ? ?/'sint?ks/? ? ? ? ? ? ? ?語法?

keep track of? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?記錄

manipulate? ? ? ?/m??n?pjule?t/? ? ? ? ? 操作

colon? ? ? ? ? ? ? ? /?k??l?n/? ? ? ? ? ? ? ? ? 冒號

deprecate? ? ? ? ?/?depr?ke?t/? ? ? ? ? ? ?不贊成

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冠场,隨后出現(xiàn)的幾起案子家浇,更是在濱河造成了極大的恐慌,老刑警劉巖碴裙,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钢悲,死亡現(xiàn)場離奇詭異,居然都是意外死亡舔株,警方通過查閱死者的電腦和手機莺琳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來载慈,“玉大人惭等,你說我怎么就攤上這事“煺。” “怎么了咕缎?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長料扰。 經(jīng)常有香客問我凭豪,道長,這世上最難降的妖魔是什么晒杈? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任嫂伞,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘帖努。我一直安慰自己撰豺,他們只是感情好拼余,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布污桦。 她就那樣靜靜地躺著匙监,像睡著了一般凡橱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亭姥,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天稼钩,我揣著相機與錄音,去河邊找鬼达罗。 笑死坝撑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粮揉。 我是一名探鬼主播巡李,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扶认!你這毒婦竟也來了击儡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蝠引,失蹤者是張志新(化名)和其女友劉穎阳谍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體螃概,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡矫夯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吊洼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片训貌。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冒窍,靈堂內(nèi)的尸體忽然破棺而出递沪,到底是詐尸還是另有隱情,我是刑警寧澤综液,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布款慨,位于F島的核電站,受9級特大地震影響谬莹,放射性物質(zhì)發(fā)生泄漏檩奠。R本人自食惡果不足惜桩了,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望埠戳。 院中可真熱鬧井誉,春花似錦、人聲如沸整胃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屁使。三九已至在岂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屋灌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工应狱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留共郭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓疾呻,卻偏偏與公主長得像除嘹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子岸蜗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • PHP(一)基礎(chǔ)語法 本來就是學(xué)習(xí)筆記尉咕,就不說廢話了 參考 PHP 手冊陳惠貞 , 陳俊榮.PHP 7&MySQL...
    cndaqiang閱讀 1,093評論 1 1
  • 一、數(shù)組 1璃岳、數(shù)組定義 數(shù)組就是一個鍵值對組成的語言結(jié)構(gòu)年缎,鍵類似于酒店的房間號,值類似于酒店房間里存儲的東西铃慷。 $...
    空谷悠閱讀 808評論 4 11
  • php面試題及答案(轉(zhuǎn)載)收藏 基礎(chǔ)題: 1.表單中 get與post提交方法的區(qū)別? 答:get是發(fā)送請求HTT...
    積_漸閱讀 1,639評論 0 37
  • php是一種服務(wù)器端解釋的腳本語言单芜。 什么是PHPPHP是一種服務(wù)器端腳本語言,他是專門為Web而設(shè)計的犁柜。 第一篇...
    vernwang閱讀 1,573評論 1 49
  • 五月二十八日洲鸠,端午假期第一天,春光明媚馋缅,惠風(fēng)和暢扒腕。 孔雀河畔,凱旋公館萤悴,花事*華藝展廳內(nèi)瘾腰,潔凈素雅,燈...
    金垛愚叟閱讀 438評論 3 4