環境搭建OS X系統上
Win7運行OS X虛擬機
在 OS X上安裝MAMP運行環境
IDE使用 Netbeans PHP版本開發
數據庫使用mysql
自學資料使用:PHP從入門到精通.pdf
第一階段書寫學習代碼,外加註釋詳解
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--<?php
$a = print("I 老虎 U??"); // 這個是允許的
echo $a; // $a的值 是1
?>-->
<!--<?php
echo "歡迎進入PHP的世界!!";
?>-->
<!--<?php
echo "恭喜您走上PHPdeian編程之路!";
?>-->
<!--<?php
echo "<table border='1'><tr><td>我是胖魚做出來的</td></tr></table>";
?>-->
<!--多種使用PHP的方法-->
<!--<script language="php">
echo "這是腳本使用PHP";
</script>
<?echo '這是簡短風格de標記';?>
<%echo '這是ASP風格的標記';%>-->
<?php
//註釋方式
//echo "<table border='1'><tr><td>我是胖魚做出來的</td></tr></table>";
/*
* 多行註釋
*/
#Shell腳本方式註釋
?>
<!--<?php
//php中的if使用
$boo = true;
if ($boo == false)
echo '變量$boo爲真';
else
echo '變量$boo爲假';
?>-->
<!--<?php
//定義字符串時,單引號和雙引號是不一樣的
//雙引號中所包含的變量會自動被替換成實際數值,而單引號中包含的變量則按普通字符串輸出
//字符串中的特殊字符還是要使用\來轉義,和JAVA相同
$i = '只會看到一遍'; //聲明一個字符串變量
echo "$i"; //用雙引號輸出
echo "<p>"; //輸出段標記
echo "$i"; //用單引號輸出
?>-->
<!--<?php
$str1 = 1234567890; //聲明一個十進制的整數
$str2 = 0 * 1234567890; //聲明一個十六進制的整數
$str3 = 01234567890; //聲明一個八進制的整數
$str4 = 01234567; //聲明另一個八進制的整數
echo '數字1234567890不同進制的輸出結果:<p>';
echo '十進制的結果是:' . $str1 . '<br>'; //輸出一個十進制整數
echo '十六進制的結果是:' . $str2 . '<br>'; //輸出十六進制整數
echo '八進制的結果:';
if ($str3 == $str4) { //判斷$str3和$str4的關係
echo '$str3=$str4=' . $str3; //如果相等,輸出變量值
} else {
echo '$str3!=str4'; //如果不相等,輸出"$str3!=$str4"
}
?>-->
<!--
<?php
echo '圓周率的3種書寫方法:';
echo '第一種:pi()=' . pi() . ''; //調用pi函數輸出圓周率
echo '第二種:3.14159265359=' . 3.14159265359 . ''; //傳統書寫格式的浮點數
echo '第三種:3.14159265359E-11=' . 314159265359E-11 . ''; //科學計數法格式的浮點數
?>-->
<!--<?php
//數組的用法
$arr1 = array('This', 'is', 'a', 'example');
$arr2 = array(0 => 'php', 1 => 'is', 'the' => 'the', 'str' => 'best');
$arr3[0] = 'tempname';
echo 'arr1=' . $arr1[0] . '<p>';
echo 'arr2=' . $arr2['the'] . '<p>';
echo 'arr3=' . $arr3[0];
?>-->
<!--<?php
/*
* is_null()函數是判斷變量是否爲null,該函數返回一個boolean型,如果
* 變量爲null,則返回true,否則返回false,unset()函數用來銷燬指定的變量
*/
echo "變量(\$string1)直接賦值爲null:";
$string1 = null; //變量$string1被賦空值
$string3 = "str"; //變量$string3被賦值str
if (is_null($string1)) { //判斷$string1是否爲空
echo "string1=null";
}
echo "<p>變量(\$string2)未被賦值:";
if (is_null($string2)) { //判斷$string3是否爲空
echo "string2=null";
}
echo "<p>被unset()函數處理過的變量(\$string3):";
unset($string3); //釋放$string3
if (is_null($string3)) { //判斷$string3是否爲空
echo"string3=null";
}
/* unset() 銷燬指定的變量。
unset() 在函數中的行爲會依賴於想要銷燬的變量的類型而有所不同。
如果在函數中 unset() 一個全局變量,則只是局部變量被銷燬,而在調用環境中的變量將保持調用 unset() 之前一樣的值。
*
*/
?>-->
<!--<?php
//類型強制轉換
/*
* (boolean) 轉換成布爾類型 (boolean)$num;
* (string) 轉換成字符型 (string)$boo;
* (integer) 轉換成整型 (integer)$boo;
* (float) 轉換成浮點型 (float)$boo;
* (array) 轉換成數組 (array)$boo;
* (object) 轉換成對象 (object)$boo;
*/
/*
* PHP中的類型轉換和C語言一樣,非常簡單,只需要在變量前加上用括號起來的類型名稱即可。另一種方法還可以通過settype()函數來完成,該函數可以將指定的變量轉換成指定的數據類型。
在進行類型轉換的過程中應注意以下幾點:
轉換成boolean型時,null,0和未賦值的變量或數組會被轉換爲false,其他的爲真;
轉換成整形時,布爾型的false轉換爲0,true轉換爲1,浮點型的小數部分被捨去,字符型如果以數字開頭就截取到非數字位,否則輸出0.
當字符串轉換爲整形或浮點型時,如果字符串是以數字開頭的,就會先把數字部分轉換爲整形,再捨去後面的字符串;如果數字中含有小數點,則會取到小數點前一位。
*/
$num = '3.1415926r*r'; //聲明一個字符串變量
echo '使用(integer)操作符轉換變量$num類型:';
echo (integer) $num; //使用integer轉換類型
echo '<p>';
echo '輸出變量$num的值:' . $num; //輸出原始變量$num
echo '<p>';
echo '使用settype函數轉換變量$num類型:';
echo settype($num, 'integer'); //使用settype函數轉換類型
echo '<p>';
echo '輸出變量$num的值:' . $num; //輸出原始變量$num
/*
* 使用integer操作符能直接輸出轉換後的變量類型。並且原變量不發生任何變換。
* 而使用settype()函數返回的是1,也就是true,而原變量被改變了。
*/
?>-->
<!--<?php
/*
* 檢測類型
* 函數 檢測類型 舉例
* is_bool 檢查變量是否是布爾類型 is_bool(true),is_bool(false)
* is_string 檢查變量是否是字符串類型 is_string('string'),is_string(1234)
* is_float/is_double 檢查變量是否是浮點類型 is_float(3.1415),is_float('3.1415')
* is_integer/is_int 檢查變量是否是整形 is_integer(34),is_integer('34')
* is_null 檢查變量是否是null is_null(null)
* is_array 檢查變量是否是數組類型 is_array($arr)
* is_object 檢查變量是否是一個對象類型 is_object($obj)
* is_numeric 檢查變量是否是數字或由數字組成的字符串 is_numeric('5'),is_numeric('bcd110')
*/
//使用is_numeric()函數
$boo = "043112345678";
if (is_numeric($boo))
echo "Yes,the \$boo a phone number : $boo !";
else
echo "Sorry,This is an error!";
?>-->
<!--<?php
/*
* 聲明和使用常量
* 常量可以理解爲值不變的量。常量值被定義後,在腳本的其他任何地方都不能改變。
* 一個常量由英文字母,下劃線和數字組成,但數字不能作爲首字母出現。
* 使用define()函數來定義常量,該函數的語法格式爲:
* define(string constant_name,mixed value,case_sensitive=true)
* 參數含義
* constant_name 必選參數,常量名稱,即標示符
* value 必選參數,常量的值
* case_sensitive 可選參數,指定是否大小寫敏感,設定爲true,表示不敏感
*
*
* 獲取常量的值由兩種方法:一種是使用常量名直接獲取值 ;另一種是使用constant()函數,
* constant()函數和直接使用常量名輸出的效果是一樣的,但函數可以動態的輸出不同的常量,
* 在使用上咬靈活方便得多。函數的語法格式爲:
*
* mixed constant(string constr_name)
*
* 參數const_name爲要獲取常量的名稱,也可以爲儲存常量名的變量。如果成功則返回常量的值,
* 否則提示錯誤信息常量沒有被定義
* 要判斷一個常量是否已經定義,可以使用defined()函數。函數的語法格式爲:
*
* bool defined(string constant_name);
*
* 參數constant_name爲要獲取常量的名稱,成功則返回true,否則返回false.
*
*/
define("MESSAGE", "能好看到一次");
echo MESSAGE . "<br>"; //輸出常量MESSAGE
echo Message . "<br>"; //輸出“Message”,表示沒有該變量
define("COUNT", "能看到多次", true);
echo COUNT . "<br>"; //輸出常量COUNT
echo Count . "<br>"; //輸出常量COUNT,因爲設定大小寫不敏感
$name = "count";
echo constant($name) . "<br>"; //輸出常量COUNT
echo (defined("MESSAGE")) . "<br>"; //如果常量被定義,則返回TRUE,使用echo輸出顯示1
?>-->
<!--<?php
/*
* 預定義常量
* PHP中可以使用預定義常量獲取PHP中的信息。常用的預定義常量如表
*
* 常量名 功能
* __FILE__ 默認常量,PHP程序文件名
* __LINE__ 默認常量,PHP程序行數
* PHP_VERSION 內建常量,PHP程序的版本,如3.0.8_dev
* PHP_OS 內建常量,執行PHP解析器的操作系統名稱,如Windows
* TRUE 該常量是一個真值(true)
* FALSE 該常量是一個假植(false)
* NULL 一個NULL值
* E_ERROR 該常量指到最近的錯誤處
* E_WARNING 該常量指到最近的警告處
* E_PARSE 該常量指到解析語法有潛在問題處
* E_NOTICE 該常量爲發生不尋常出的提示但不一定是錯誤處
*
*
* 注意:__FILE__和__LINE__中的“__”是兩條下劃線,而不是一條
*
* 說明:
* 表中的以E_開頭的預定義常量,是PHP的錯誤調試部分。如需詳細瞭解,請參考
* error_reporting()函數。
*/
echo "當前文件路徑:" . __FILE__; //輸出__FILE__常量
echo "<br>當前行數:" . __LINE__; //輸出__LINE__常量
echo "<br>當前PHP版本信息:" . PHP_VERSION; //輸出PHP版本信息
echo "<br>當前操作系統:" . PHP_OS;
?>-->
<!--<?php
/**
*
* 變量
*/
//變量間的賦值。
$string1 = "spcn"; //聲明變量$string1
$string2 = $string1; //使用$string1初始化$string2
$string1 = "zhuding"; //改變變量$string1的值
echo $string2 . "<br>"; //輸出變量$string2的值
echo $string1;
//從PHP4開始,PHP引入了“引用賦值”的概念。引用的概念是,用不同的名字
//訪問同一個變量內容。當改變其中一個變量的值時,另一個也跟着發生變化
//使用&符號來表示引用
$i = "spcn"; //聲明變量$i
$j = & $i; //使用引用賦值,這時$j已經賦值爲span
$i = "hello,$i"; //重新給$j賦值
echo "<br>" . $j; //輸出變量$j
echo "<br>";
echo $i; //輸出變量$i
?>-->
<!--<?php
/*
* 變量作用域
* 變量在使用時,要符合變量的定義規則。變量必須在有效範圍內使用,如果變量超出
* 有效範圍,則變量也就失去其意義了。變量的作用域如表
*
* 作用域 說明
* 局部變量 在函數的內部定義的變量,其作用域是所在函數
*
* 全局變量 被定義在所有函數以外的變量,其作用域是整個PHP文件,但在用戶自定義函數
* 內部是不可用的。如果希望在用戶自定義函數內部使用全局變量,則要使用global
* 關鍵字聲明
*
* 靜態變量 能夠在函數調用結束後仍保留變量值,當再次回到其作用域時,又可以繼續使用
* 原來的值。而一般變量是在函數調用結束後,其存儲的數據值將被清除,所佔的內存
* 空間被釋放。使用靜態變量時,先要用關鍵字static來聲明變量,吧關鍵字static
* 放在腰定義的變量之前
*
* 在函數內部定義的變量,其作用域爲所在函數,如果在函數外賦值,將被認爲是完全不同
* 的另一個變量。再退出聲明變量的函數時,該變量及相應的值就會被清除。
*
*/
$example = "在。。。。。函數外";
function example() {
$example = "。。。。。在函數內。。。。。";
echo "在函數內輸出的內容是:$example.<br>";
}
example();
echo "在函數外輸出的內容是:$example.<br>";
//------靜態變量在很多地方都能用到。例如,在博客中使用靜態變量記錄遊覽者得人數,每一次
//用戶訪問和離開時,都能夠保留目前瀏覽者的人數。在聊天室也可以使用靜態變量來記錄用戶的聊天內容
//使用靜態變量和普通變量同時輸出一個數據
function zdy() {
static $message = 0; //初始化靜態變量
$message+=1; //靜態變量加1
echo $message . ""; //輸出靜態變量
}
function zdy1() {
$message = 0; //聲明函數內部變量(局部變量)
$message+=1; //局部變量加1
echo $message . ""; //輸出局部變量
}
for ($i = 0; $i < 10; $i++)
zdy(); //輸出1~10
echo"<br>";
for ($i = 0; $i < 10; $i++)
zdy1(); //輸出10個1;
echo"<br>";
/* er
*
* 自定義函數zdy()是輸出從1~10共10個數字,而zdy1()函數則輸出的是10個1.因爲
* 自定義函數zdy()含有靜態變量,而函數zdy1()是一個普通變量。初始化都爲0,再分別使用
* for循環調用兩個函數,結果是靜態變量的函數zdy()再被調用後保留了$message中的值,
* 而靜態變量的初始化只是在第一次遇到時被執行,以後就不在對其進行初始化操作了,將會
* 略過第三行代碼不執行;而普通變量的函數zdy1()在被調用後,其變量$message失去了原來的
* 值,重新被初始化爲0.
*
*
*
* 全局變量可以在程序中的任何地方訪問,但是在用戶自定義函數內部是不可用的。想在用戶自定義
* 函數內部使用全局變量,要使用global關鍵字聲明。
*/
$zy = "不會看到"; //聲明全局變量$zy
$zyy = "會看到"; //聲明全局變量$zyy
function lxt() {
echo $zy . "<br>"; //$zy不能被調用,沒有輸出
global $zyy; //利用關鍵字global在函數內部定義全局變量
//字符串鏈接. 同等於JAVA中的+
$zyy = $zyy . "安鵬";
echo $zyy . "<br>"; //此處調用$zyy
}
lxt();
?>-->
<!--<?php
/*
* 可變變量
* 可變變量是一種獨特的變量,它允許動態改變一個變量名稱。其工作原理是該變量的名稱
* 由另外一個變量的值來確定,實現工程就是在變量的前面再多加一個美元符號“$”;
*/
$change_name = "trans";
$trans = "You can see me!";
echo $change_name;
echo "<br>";
echo $$change_name;
?>-->
<!--<?php
/*
* PHP預定義變量
常用的預定義變量如下表:
$_SERVER[‘SERVER_ADDR’] 當前運行腳本所在服務器的IP地址
$_SERVER[‘SERVER_NAME’] 當前運行腳本所在服務器的名稱
$_SERVER[‘REQUEST_METHOD’] 訪問頁面時的請求方法。如GET、POST、HEAD、PUT等,如果請求的方式是HTAD,PHP腳本將在送出頭信息後中止(這意味着在產生任何輸出後,不再有輸出緩衝)
例:if($_SERVER['REQUEST_METHOD']== 'POST'){ //判斷是否是提交操作
程序體,如將提交的信息添加到數據庫中等等一系列的操作。
}
$_SERVER[‘REMOTE_ADDR’] 正在瀏覽當前頁面用戶的IP地址。
$_SERVER[‘REMOTE_HOST’] 正在瀏覽當前頁面用戶的主機名。反向域名解析基於該用戶的remote_addr
$_SERVER[‘REMOTE_PORT’] 用戶連接服務器時所使用的端口
$_SERVER[‘SCRIPT_FILENAME’] 當前執行腳本的絕對路徑。注意,如果腳本在CLI中被執行,作爲相對路徑,如file.php或者../file.php,$_SERVER[‘SCRIPT_FILENAME’]將包含用戶指定的相對路徑。
$_SERVER[‘SERVER_PORT’] 服務器所使用的端口,默認爲80。如果使用ssl安全連接,則這個值爲用戶設置的端口
$_SERVER[‘SERVER_SIGNATURE’] 包含服務器版本和虛擬主機名的字符串
$_SERVER[‘DOCUMENT_ROOT’] 當前運行腳本所在的文檔根目錄,在服務器配置文件中定義。
$_COOKIE 通過httpcookie傳遞到腳本的信息。這些cookie多數是由執行PHP腳本時,通過setcookie()函數設置的。
$_SESSION 包含與所有會話變量有關的信息。$_SESSION變量主要應用於會話控制和頁頁之間值的傳遞。
$_POST 包含通過POST方法傳遞的參數的相關信息。主要用於獲取通過POST方法提交的數據。
$_GET 包含通過GET方法傳遞的參數的相關信息。主要用於獲取通過GET方法提交的數據
$GLOBALS 由所有已定義全局變量組成的數組。變量名就是該數組的索引。它可以稱得上是所有超級變量的超級集合。
注意:預定義變量是區分大小寫的。
*/
echo $_SERVER['SERVER_ADDR'] . '<br>';
echo $_SERVER['SERVER_NAME'] . '<br>';
echo $_SERVER['REQUEST_METHOD'] . '<br>';
echo $_SERVER['REMOTE_ADDR'] . '<br>';
echo $_SERVER['REMOTE_HOST'] . '<br>';
echo $_SERVER['REMOTE_PORT'] . '<br>';
echo $_SERVER['SCRIPT_FILENAME'] . '<br>';
echo $_SERVER['SERVER_PORT'] . '<br>';
echo $_SERVER['SERVER_SIGNATURE'] . '<br>';
echo $_SERVER['DOCUMENT_ROOT'] . '<br>';
/*
* $_COOKIE,是文件頭信息,而文件頭是不可顯示內容。也就是說,不能在正文中操作$_COOKIE。更通俗地說,在瀏覽器中查看源碼,只要源碼不爲空,再使用$_COOKIE系統將報錯。
解決方法:將$_COOKIE賦值給變量,再對變量進行操作。比如
………………
$user_cookie=$_COOKIE['usercookie']
………………
echo $user_cookie
*/
echo $_COOKIE . "<br>";
?>-->
<!--<?php
/*
* 算數運算符(和Java相同)
*
* 名稱 操作符 舉例
* 加法運算 + $a+$b
* 減法運算 - $a-$b
* 乘法運算 * $a*$b
* 除法運算 / $a/$b
* 取餘運算 % $a%$b
* 遞增運算 ++ $a++,++$a
* 遞減運算 -- $a--,--$a
*
* 在算術運算符中使用%求餘,如果被除數($a)是負數,那麼取得的結果也是一個負值。
*/
$a = -100;
$b = 50;
$c = 30;
echo "\$a=" . $a . ",";
echo "\$b=" . $b . ",";
echo "\$c=" . $c . "<p>";
echo "\$a+\$b=" . ($a + $b) . "<br>";
/*
* -
* *
* /
* %
* .
* .
* .
*/
?>-->
<!--<?php
/*
* 字符串運算符只有一個,即英文的句號"."。它將兩個字符串鏈接起來,結合成一個新的字符串。
* 使用過C或JAVA的應該注意,這裏的“+”號只用做賦值運算符使用,而不能用作字符串運算符。
*/
$n = "3.1415926r*r";
$m = 1;
$nm = $n . $m;
echo $nm . "<br>";
$mn = $n + $m;
echo $mn . "<br>";
?>-->
<!--<?php
/*
* PHP中的賦值運算符跟JAVA相同
* =
* +=
* -=
* *=
* /=
* .= $a.=b $a=$a.b 將右邊的字符加到左邊
* %
*/
?>-->
<!--<?php
/*
* 位運算符
* 位邏輯運算符是指對二進制位從低位到高位對齊後進行運算
*
*
* 符號 作用 舉例
* & 按位與 $m & $n
* | 按位或 $m | $n
* ^ 按位異或 $m ^ $n
* ~ 按位取反 $m ~ $n
* << 向左移位 $m << $n
* >> 向右移位 $m >> $n
*/
$m = 8;
$n = 12;
$mn = $m & $n;
echo $mn . "<br>";
$mn = $m | $n;
echo $mn . "<br>";
$mn = $m ^ $n;
echo $mn . "<br>";
$mn = ~$m;
echo $mn . "<br>";
?>-->
<!--<?php
/*
* 邏輯運算符
*
* 運算符 舉例 結果爲真
* &&或and(邏輯與) $m and $n 當$m和$n都爲真時
* ||或or(邏輯或) $m||$n 當$m爲真或者$n爲真時
* xor(邏輯異或) $m xor $n 當$m,$n一真一假時
* !(邏輯非) !$m 當$m爲假時
*
* 在邏輯運算符中,邏輯與和邏輯或這兩個運算符有4種運算符號(&&,and,||和or)。其中
* 屬於同一個邏輯結構的兩個運算符號(例如&&和and)之間卻有着不同的優先級
*/
$i = true; //聲明一個布爾型變量$i,賦值爲真
$j = true; //聲明一個布爾型變量$j,賦值也爲真
$z = false; //聲明一個初值爲假的布爾變量$z
if ($i or $j and $z) //用or作判斷
echo "true"; //如果if表達式爲真,輸出true
else
echo "false"; //否則輸出false
echo "<br>";
if ($i || $j and $z) //用||作判斷
echo "true"; //如果表達式爲真,輸出true
else
echo "false"; //如果表達式爲假,輸出false
/*
* 注意:
* 可以看到,兩個if語句除了or和||不同之外,其他完全一樣,但最後的結果卻正好
* 相反。在實際應用中要多注意一下這樣的細節。
*/
?>-->
<!--<?php
/*
* 比較運算符
* 大多運算符JAVA中相同
*
* 其中,不太常見的就是===和!==。$a===$b,說明$a和$b不只是數值上相等,而且二者的類型
* 也一樣。!==和===的意義相近,$a!==$b就是說$a和$b或者數值不等,或者類型不等
*/
$value="100"; //聲明一個字符串變量$value
echo "\$value=\"$value\"";
echo "<p>\$value==100;";
var_dump($value==100); //結果爲:bool(true)
echo "<p>\$value==true;";
var_dump($value==true); //結果爲:bool(true)
echo "<p>\$value!=null;";
var_dump($value!=null); //結果爲:bool(true
echo "<p>\$value==false;";
var_dump($value==false); //結果爲:bool(false)
echo "<p>\$value===100;";
var_dump($value===100); //結果爲:bool(false)
echo "<p>\$value===true;";
var_dump($value===true); //結果爲:bool(true)
echo"<p>(10/2.0!==5);";
var_dump(10/2.0!==5); //結果爲:bool(true)
?>-->
</body>
</html>