推薦:php mysql
首先,來了解一下,這幾門語言主要負責些什麼。 PHP是負責主要的在伺服器上的工作,MySQL是負責所有的數據,CSS和JavaScript則是管理網頁的展現。然而JavaScript也能與PHP進行通信,無論何時需要更新一些伺服器上的或是頁面上的資訊。
PHPPHP是相對鬆散的語言。也就是它的變數類型不需要在使用前被宣告。字串內的數字可以自動轉換為數字類型。
PHP的常數(constants)1. 宣告一個常數不需要用($),一般以字元或底線開頭2. 只能用define方法來賦值給常數define ( 'TIREPRICE' , 100 ) ;3. 在腳本中無法改變該值。 4. 與變數不同,常數貫穿整個腳本是自動全域的。3. 不能包含空格,如果一定包含兩個單詞,一定用'_' (underscore )來分開;
4. 對大小寫是sensitive的,$High_Score與$high_score是不同的變數。
冗長風格 Long style $HTTP_POST_VARS[ ' tireqty' ] 已經被棄用#我們通常建議使用中等風格來宣告變數。如果你建立一個簡短風格,然後把中等風格賦值給它沒有安全問題,反而更容易被使用。 $tireqty = $_POST [ 'tireqty' ] ;PHP的字串規則單引號是不會把文字裡中以$開頭的字串當作變數的。如果要把它當成變數來看那就需要用雙引號。如果字串內要使用單引號的話,不能直接使用,這個和JavaScript一樣。需要轉義字元用“\”來解決單引號問題。此外,\t,\n,\r在雙引號裡才有效。 PHP也提供了多行數列的運算子“<<<”,優點是輸出大段HTML方便,不需要轉義,而且可以引用變數。 「<<<」之後跟著任意你自己喜歡的名字(自訂分界符),並以此未結束。之間文字打回車不會被顯示。裡面的變數將可以使用,如果不需要出現變數可以用 “.”來連接。此時就不會被解讀為變數了,而是正常輸出。 在使用(<<<)時,還需注意的一點是,標識符結束符串(如:END)需要獨佔一行,前後都不允許再有內容包括空格,否則這個PHP檔案就相當於廢了。
echo和print指令的差別######這兩個指令是十分相似的。但是###print###是一個函數方法需要用到一個參數,然而###echo###是###PHP###語言的結構。在普通的文字輸出上,###echo###要比###print###稍微快一點,因為它不是一個函數不需要設定一個回傳值。同時,因為###echo###它不是函數,所以不能被用於大量複雜的表達式,但是###print###卻可以。 ###Function是用來區分為了實作不同特殊功能的程式碼。例如這個程式碼列印三行字,但是如果我要列印十幾個的話,就需要不停複製貼上這些程式碼,無疑是讓程式碼變得更為複雜和龐大。但是用了function就只需要使用一次函數就可以印十幾次。它是程式碼變得更簡潔並且可讀性更高。聲明function的方式與JavaScript一樣。
}例如:
function longdate($timestamp){
return date("l F jS Y",$timestamp);
# return date("l F jS Y",$timestamp);
PHP的變數作用域(Variable Scope)
在PHP語言中,你可以決定變數的作用域,例如,只在函數裡面使用,或者是全域範圍的,任何範圍都能被使用。
Local Variables(本地變數)是指變數被建立只被允許在函數中呼叫。它是零時性的儲存,一旦函數完成也就不存在了。 Global Variables(全域變數)有些時候我們也需要全域變量,因為你希望你所有的程式碼都能呼叫到它。當需要宣告全域變數時,我們需要使用關鍵字
global。不建議使用全域變量,實在沒有其他方法時,可以使用。因為一般程式是被打碎成多個小零件,這樣資料發生問題也是一些小問題容易被維護。但是如果上千行的程式碼程式被發現你的全域變數出現了問題。那麼將需要花非常大的精力與時間去維護它。同時,建議在為全域變數命名時,最好使用大寫字母。
Static Variables(靜態變數)當你使用變數希望它只能在函數中被調用,但是你也希望它能再下次使用這個函數時,值不會被恢復到原來的值。這時我們就需要用到靜態變數。同時要注意的是,靜態變數不能給予一個計算公式或函數,必須賦一個實際的值。static $int = sqrt(144); //Disallowed例如:
static $int = 0; //Allowed
static $int = 1 2; //Disallowed (will produce a Parse error)
Superglobal Variables(超級全域變數)PHP 中的許多預定義變數都是“超全域的”,這意味著它們在一個腳本的全部作用域中都可用。這些超級全域變數名都是使用_下劃線和大寫字母,所以在起名時應該避免重複以造成程序混亂。這些超全域變數是:
$GLOBALS
#$_SERVER
$_REQUEST
##$_POST$_GET$_FILES$_ENV#$_COOKIE$_SESSION
例如:$myname = "Brian";$myage = 37;echo "a: " . 73 . "
"; //Numeric literal echo "b: " . "Hello" . "
"; //String literal#echo "c : " . FALSE . "
"; //Constant literalecho "d: " . $myname . "
"; //Variable string literal
這個和JavaScript都是一樣的。####。 ###echo "e: " . $myage . "
"; //Variable numeric literal######結果是:#######a: 73 b: Hello c: d####a: 73 b: Hello c: d d####a: 73 b: Hello c: d 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 結合性運算子(associativity)#########這類型的運算子是從右到左計算。 ############Operator Example#######新 時邏輯NOT
~ 增加與 一元加法與取反
(int) 轉換為整數 $c = ( int) ($a / $b);
(double) 轉換為字串
(陣列) ) 轉換為陣列
(object) 中中禁止錯誤回報
大 好吧附註:
=條件式是動態頁面的核心,它能夠簡單地根據不同的條件創建出不同的頁面結果。有清晰的表達方法:if#,
switch和
?(三目運算子) .
PHP循環(Looping)
能地周而復始地工作直到事情發生狀態。循環方式有:while,do……while與for。
PHP的函數與物件
函數的好處:1.簡潔2。減少語法和其他編寫程式的錯誤3。減少程式檔案的載入時間
4。同時減少執行時間,因為每個函數都只需被解析一次,那麼就會被呼叫多少次。
5.函數接受參數,這樣能夠被普遍使用,也同時能被特殊的情況使用。
PHP有上百種已經編寫好的函數,從而成為一種豐富的語言。
#Include
和require
require()
的效能與include()
相似,都是類似的不同的端點對應:對
include()語句來說,在執行檔時每次都要進行讀取和評估;而對於require()也就是說,文件只處理一次。這意味著如果可能執行多個的程式碼,則使用require()效率比較高。另外一方面,如果每次執行程式碼時是讀取不同的文件,或者有透過一組檔案迭代的循環,就使用
include()語句。
$object1 = new User();$object1->name = "Alice"; echo $object1->name;class User {}?>require的使用方法如:require("myfile.php"),這個語句通常放在PHP腳本程式的最前面。 PHP程式在執行前,就會先讀入require()語句所引入的文件,使它變成PHP腳本文件的一部分。 include使用方法和require一樣如:include("myfile.php"),而這個語句一般是放在流程控制的處理區段。 PHP腳本檔在讀到include()語句時,才將它所包含的檔案讀取進來。這種方式,可以把程式執行時的流程簡單化。
include在使用時載入 require一開始就載入
include/require_once後綴表示已載入的不載入
PHP系統在載入PHP程式時有一個偽編譯過程,可讓程式運作速度加快。但include的文檔仍為解釋執行。 include的檔案中出錯了,主程式繼續往下執行,require的檔案出錯了,主程式也停了,所以包含的檔案出錯對系統影響不大的話(如界頁面檔案)就用include,否則用require。
require()和include()語句是語言結構,不是真正的函數,可以像php中其他的語言結構一樣,例如echo()可以使用echo("ab")形式,也可以使用echo "abc"形式輸出字串abc。 require()和include()語句也可以不加圓括號而直接加參數。
include_once()和require_once()語句也是在腳本執行期間包含執行指定檔案。此行為和include()語句及require()類似,使用方法也一樣。唯一區別是如果該文件中的代碼已經被包括了,則不會再次包括。這兩個語句應該用於在腳本執行期間,同一個檔案有可能被包含超過一次的情況下,確保它只被包括一次,以避免函數重定義以及變數重新賦值等問題。
function_exists("function name")是判斷這個函數是否有效。
物件Object
面對物件(object-oriented programming OOP)讓函數提升到新的水平。當一些方法要被重複使用,那麼就可以考慮把這些方法和資料放入物件中去。一起想看一個社群網站,它有很多部分組成。一個組成部分是要管理所有的使用者函數。例如讓新用戶註冊,和讓存在的用戶更改他們的資訊。一般來說,我們會建立一些函數去管理這些並且請求MySQL資料庫去記錄所有的使用者。而我們知道對象後,完全可以建立一個名為User的對象,並且把所有的資料與方法放入這個對象裡。那麼無論什麼時候當需要去操作一個使用者的資料時,我們就可以簡單地建立一個和User類別有關的物件。物件中的資料稱為屬性,物件中的函數稱為方法。如果你發現需要類外一個類,這個類別與User類別很相似,但有些不同,這時我們需要繼承User類別。那麼原來的User類別就被成為父類別(superclass),而新的類別就變成子類別(subclass/derived class)。
宣告一個類別(Declaring a Class)
在使用一個物件之前,必須用關鍵字class定義一個類別。定義一個類別包含類別名稱(它是大小寫sensitive的),類別的屬性,和類別的方法。可以使用 '->' 來賦予變數/屬性賦值。這是變數不需要用$來宣告。
建構子(Constructors)
在類別裡面有參數且與類別名稱相同的方法稱為建構子。現在很多使用__construct來命名建構函式。當不再需要這個物件的時候,就需要呼叫destructor,來釋放這個物件所佔的記憶體。但是destructor不需要設計,因為系統會自動釋放特定的記憶體。除非你用到了動態內存,那麼你就是要自己設計一個destructor告訴系統要釋放哪些內存。
宣告一個方法(Methods)
宣告一個方法與宣告一個函數非常類似,但還是有少許不同。例如,方法的命名開頭跟隨兩個底線(__)。 $this是指現在這個對象,並傳回這個對象的屬性值。
靜態方法(static methods)
在php程式設計中,static關鍵字宣告一個屬性或方法是和類別相關的,而不是和類別的某個特定的實例相關,因此,這類屬性或方法也稱為「類別屬性」或「類別方法」
如果存取控制權限允許,可不必建立該類別物件而直接使用類別名稱加兩個冒號“::”調用。
User::pwd_string();
class User
{
static function pwd_string()
{
echo "Please
echo "Please}
}
?>
「宣告屬性(Declaring Properties)
##」宣告屬性不是必須在類裡的,類別裡沒有屬性和方法但仍然是合法的。但為了幫助自己和其他人更好地理解與維護程式碼,還是建議把屬性的聲明放入類別裡。
宣告一個常數(Declaring Constant)
定義一個常數需要在常數名前面加上const。常量名一般使用大寫字母,使他們變得更為突出。當常數/變數使用關鍵字self和兩個冒號(::)時,就能夠被直接引用。
屬性和方法的作用域(Property and Method Scope)
PHP提供了3個關鍵字來控制屬性和方法的作用域。 1. public —— 這些屬性是用var和public關鍵字聲明的。 pubilic與var是能夠被互換的,雖然這是不被贊成的。當外部的程式碼要呼叫這個屬性,或是拓展類別需要繼承它,我們就應該用public來宣告。
2. protected —— 這些屬性和方法只能被物件中的方法和任何子類別引用。當不想被外部程式碼來調用,但是拓展類別希望繼承它,我們就可以用protected來聲明。 3. private —— 這些成員只能能被同一個類別引用,子類別也是不能引用的。當我們不想這些成員被外部任何程式碼方法或類別來調用,就應該使用private來進行聲明。靜態屬性和方法(static properties and methods)
#靜態方法可以直接調用,而屬性是不可以的。屬性的呼叫可以使用關鍵字self和雙冒號的方法來呼叫類別內部的靜態屬性。繼承(Inheritance)
任何類別都能被繼承。減少程式碼的重複性,只要改變一小部分,調整不同的地方。使用關鍵字extends進行拓展聲明。
is_array($array_name)傳回布林值,可以判斷這個陣列是否是有效的。
sort($array_name, SORT_NUMERIC/STRING)透過數字和字串從小到大排序。
rsort($array_name, SORT_NUMERIC/STRING)透過數字和字串從大到小排序。
shuffle($array_name)打亂數組,隨機排序。
explode(' ',"string")這個是十分有用的方法,他會把輸入的string,透過要求分隔成單一元素然後放入陣列中。第一個參數是透過什麼來分割,第二個是放入的string。
extract()這個方法可以很容易地把陣列變成鍵值對的形式。經常可以用於$_POST和$_GET。
extract(array,extract_rules,prefix)有三個參數,
第一個array必要。規定要使用的輸入。 第二個extract_rules可選。 extract() 函數將檢查每個鍵名是否為合法的變數名,同時也檢查和符號表中的變數名稱是否衝突。對非法、數字和衝突的鍵名的處理將根據此參數決定。可以是下列值之一:可能的值:EXTR_REFS - 將變數作為引用提取。這有力地顯示了導入的變數仍然引用了 var_array 參數的值。可以單獨使用這個標誌或在 extract_type 中用 OR 與其它任何標誌結合使用。本標記是 PHP 4.3.0 新加的。
第三個參數,prefix可選。請注意 prefix 僅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 時需要。如果附加了前綴後的結果不是合法的變數名,則不會匯入符號表。前綴和陣列鍵名之間會自動加上一個底線。
?>程式碼如下:
$a = 'Original';
$my_array = array("a" = > "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
# extract($my_array);
# echo "\$a = $a; \$b = $b; \$c = $c";
輸出:
$a = Cat;
$b = Dog;
$c = Horse
#使用完整參數:程式碼如下:
##< ;?php $a = 'Original'; $my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse"); extract($my_array, EXTR_PREFIX_SAME, 'dup'); # echo "\$a = $a; \$b = $# echo "\$a = $a; \$b = $
\$bb = $b; c = $c; \$dup_a = $dup_a;";
?>
輸出: $a = Original; $b = Dog; $c = Horse; $dup_a = Cat; 在action.php中只要使用extract()函數將$_POST全域數據解開:action.php
程式碼如下: extract($_POST); //相當於$username = $_POST['username']; //$password = $_POST['password'];
?>
compact(var1,var2 ...)
函數建立一個由參數所帶變數組成的陣列。如果參數中存在數組,則該數組中變數的值也會被取得。本函數傳回的陣列是一個關聯數組,鍵名為函數的參數,鍵值為參數中變數的值。
本函數執行的行為與extract()
正好相反。 範例1?>使用不符變數的字串,以及變數名稱陣列:
$firstname = "Bill"; $lastname = "Gates";# $age = "60";## $name = array("firstname", "lastname");
$result =compact($name, "location", "age");
print_r($result);
輸出結果:
Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )
其他相關的方法:
current()- 傳回陣列中的目前元素的值
end()- 將內部指標指向陣列中的最後一個元素,並輸出
next()- 將內部指標指向陣列中的下一個元素,並輸出
prev()- 將內部指標指向陣列中的上一個元素,並輸出
each()printf(arg1,arg2,agr )函數輸出格式化的字串。 arg1、arg2、arg 參數將插入到主字串中的百分號(%)符號處。該函數是逐步執行的。在第一個 % 符號處,插入 arg1,在第二個 % 符號處,插入
arg2,依此類推。描述
format ###必要。規定字串以及如何格式化其中的變數。 ###可能的格式值:
與 %c - ASCII 值對應的字元
%d - 包含正負號的十進位數(負數、0、正數)
%e - 使用小寫的科學數法(例如1.2e 2)
E - 使用大書的科學數法(例如1.2E 2)
的 地設定)
地 %g - 較短的%e 與%f
#o %G - 較短的%E 與%f # %x - 十六進位數(小寫字母) %X - 十六進位數(大寫字母) 必需放置在 % 和字母之間(例如 %.2f):' (規定使用什麼作為填充,預設為空格它必須與寬度指定器一起使用。)
[0-9] (規定於變數值 [0-9](規定小數位數或最大字串長度)
##arg1
地規定插入format
字串中第一個 % 符號處的參數。arg2 必要。規定插到 format 字串中第二個 % 符號處的參數。
arg 可選。規定插到 format 字串中第三、四等等 % 符號處的參數。
PHP printf() 函數
syntax /'sintœks/ 記錄
#manipulate /məˈnɪpjuleɪt/ 作業
##colondeprecate /ˈdeprəkeɪt/ 不贊成
#以上是記錄學習PHP與mySQL的辛酸史的詳細內容。更多資訊請關注PHP中文網其他相關文章!