1. 程式人生 > >PHP自學,第一階段,基礎學習

PHP自學,第一階段,基礎學習

變量名 腳本 聲明變量 內部 words 變量作用域 utf 邏輯運算符 虛擬機

環境搭建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語言一樣。很easy,僅僅須要在變量前加上用括號起來的類型名稱就可以。還有一種方法還能夠通過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
* keyword聲明
*
* 靜態變量 可以在函數調用結束後仍保留變量值,當再次回到其作用域時,又可以繼續使用
* 原來的值。而一般變量是在函數調用結束後,其存儲的數據值將被清除。所占的內存
* 空間被釋放。使用靜態變量時,先要用keywordstatic來聲明變量,吧keywordstatic
* 放在腰定義的變量之前
*
* 在函數內部定義的變量,其作用域為所在函數。假設在函數外賦值。將被覺得是全然不同
* 的還有一個變量。再退出聲明變量的函數時,該變量及對應的值就會被清除。
*
*/
$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.
*
*
*
* 全局變量能夠在程序中的不論什麽地方訪問,可是在用戶自己定義函數內部是不可用的。想在用戶自己定義
* 函數內部使用全局變量,要使用globalkeyword聲明。
*/
$zy = "不會看到"; //聲明全局變量$zy
$zyy = "會看到"; //聲明全局變量$zyy


function lxt() {
echo $zy . "<br>"; //$zy不能被調用,沒有輸出
global $zyy; //利用keywordglobal在函數內部定義全局變量
//字符串鏈接. 同等於JAVA中的+
$zyy = $zyy . "安鵬";
echo $zyy . "<br>"; //此處調用$zyy
}


lxt();
?>-->


<!--<?php
/*
* 可變變量
* 可變變量是一種獨特的變量,它同意動態改變一個變量名稱。其工作原理是該變量的名稱
* 由另外一個變量的值來確定。實現project就是在變量的前面再多加一個美元符號“$”;
*/
$change_name = "trans";
$trans = "You can see me!";
echo $change_name;
echo "<br>";
echo $$change_name;
?>-->
<!--<?php
/*
* PHP提前定義變量
經常使用的提前定義變量例如以下表:
$_SERVER[‘SERVER_ADDR’] 當前執行腳本所在server的IP地址
$_SERVER[‘SERVER_NAME’] 當前執行腳本所在server的名稱
$_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時所使用的port
$_SERVER[‘SCRIPT_FILENAME’] 當前運行腳本的絕對路徑。註意,假設腳本在CLI中被運行,作為相對路徑,如file.php或者../file.php,$_SERVER[‘SCRIPT_FILENAME’]將包括用戶指定的相對路徑。
$_SERVER[‘SERVER_PORT’] server所使用的port,默覺得80。假設使用ssl安全連接。則這個值為用戶設置的port
$_SERVER[‘SERVER_SIGNATURE’] 包括server版本號和虛擬主機名的字符串
$_SERVER[‘DOCUMENT_ROOT’] 當前執行腳本所在的文檔根文件夾,在server配置文件裏定義。
$_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>




























PHP自學,第一階段,基礎學習