PHP程式設計

Download Report

Transcript PHP程式設計

PHP
常數
常數
 常數也是存放資料的變數,只不過是給予資
料之後,就不可改變資料內容,所以常數是
以另一種方式來定義。
 預設常數 & 自定常數。
 自定常數是用 define( )函數來建立。
 在程式中要使用常數時,直接使用它的名稱
就可以,不用「$」符號。
<?
define ("PI", "3.1415926"); // 設定π的值
echo PI;
?>
預設常數
PHP本身預先定義好的常數
<?
echo “php的版本是” . PHP_VERSION . “<P>”;
echo “目前工作平台的作業系統是”. PHP_OS;
?>
大小寫有別嗎?
是否可以像變數搭配雙引號一樣的用法?
http://php.benscom.com/manual/hk/language.constants.php
常數
在PHP中,常數的名稱一樣有大小寫之別,
但是前頭不必加上「$」字元,因此,若
將常數置於字串裡頭的話,將不會被系統
所辨識出來。
自定常數
define (常數名稱, 常數值, [case_intensitive]);
case_intensitive =1:大小寫沒有差別
case_intensitive省略:大小寫有別
<?
define ("PI", "3.1415926“,1); // 設定π的值
echo PI;
echo Pi;
echo pi;
?>
常數
 要檢查「某字串」是否被定義為常數,可運
用 defined ( ) 來識別。
<?
if ( defined ("PI") ) {
echo "PI 已被設定";
}
else {
echo "未設定”;
}
?>
只有布林,整數,
浮點數與字串四個
型態可以設定常數
PHP
運算子
Operator
運算子
 $total = $a + $b;
$a , $b 稱為「運算元」
$total稱為「目的運算元」
$a + $b 稱為「運算式」(expressions)
+ 即稱為「運算子」(operator)
在PHP裡,運算子大致分為十種
運算子
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
算術運算子
指定運算子
位元運算子
比較運算子
錯誤控制運算子
執行運算子(課本沒提)
加一/減一運算子
邏輯運算子
字串運算子
陣列運算子(課本沒提)
算術運算子 Arithmetic Operators
一般的數學+ - * / …(四則運算與取餘數)
運算子
範例
用途
+
*
/
$a + $b
$a - $b
$a * $b
$a / $b
$a 和 $b 的和。
$a 和 $b 的差。
$a 和 $b 的乘積。
$a 除以 $b 的商。
%
$a % $b
$a 除以 $b 的餘數。
指定運算子 Assignment Operators
 基本的指定運算符號為“=”。
 程式語言中並不稱作“等於”,實際上意味著
把=右邊的值指定給=左邊的變數。
 $a = $a + 2;
正確的解釋是將「右邊的$a + 2 的值」指定給
「左邊的 $a 」。
 可以結合算術運算子形成組合運算子
指定運算子
組合運算子可以簡寫為下列方式:
標準式
$a = $a + $b
$a = $a - $b
$a = $a * $b
$a = $a / $b
$a = $a % $b
範例10-2
簡單式
$a += $b
$a -= $b
$a *= $b
$a /= $b
$a %= $b
邏輯運算子
 結果只有True 或 False。
 邏輯運算子主要用來測試條件句的真(true)或假(false),
以判斷程式的某個段落是否繼續執行或跳脫。
範例
名稱
解釋
$a and $b And(邏輯與) TRUE,如果 $a 與 $b 都為 TRUE。
$a or $b
Or(邏輯或)
$a xor $b Xor(邏輯互斥)
! $a
TRUE,如果 $a 或 $b 任一為 TRUE。
TRUE,如果 $a 或 $b 任一為 TRUE,但不同
時是。
Not(邏輯非) TRUE,如果 $a 不為 TRUE。
$a && $b And(邏輯與) TRUE,如果 $a 與 $b 都為 TRUE。
$a || $b
Or(邏輯或)
TRUE,如果 $a 或 $b 任一為 TRUE。
比較運算子
範例
名稱
解釋
$a == $b
等於
TRUE,如果 $a 等於 $b。
$a === $b
全等
TRUE,如果 $a 等於 $b,並且它們的類型也相同。
(PHP 4 only)
$a != $b
不等
TRUE,如果 $a 不等於 $b。
$a <> $b
不等
TRUE,如果 $a 不等於 $b。
$a !== $b
非全等
$a < $b
小與
TRUE,如果 $a 小於 $b。
$a > $b
大於
TRUE,如果 $a 大於 $b。
$a <= $b
小於等
於
TRUE,如果 $a 小於或者等於 $b。
$a >= $b
大於等
於
TRUE,如果 $a 大於或者等於 $b。
TRUE,如果 $a 不等於 $b,或者它們的類型不同。
(PHP 4 only)
比較運算子
另外一個條件運算符號是“?:”(或三元)運算符
號,它和 C 以及很多其他語言的操作一樣。
(expr1) ? (expr2) : (expr3);
如果 expr1 的值為 TRUE,則此運算式的值為
expr2,如果 expr1 的值為 FALSE,則此運算式的
值為 expr3。
<?
$a=0;
echo ($a) ? (2) : (3);
?>
遞增/遞減運算子
PHP 支持 C 風格的前/後加一與減一運算子
範例
名稱
解釋
++$a
前加
$a 的值加一,然後返回 $a。
$a++
後加
返回 $a,然後將 $a 的值加一。
--$a
前減
$a 的值減一, 然後返回 $a。
$a--
後減
返回 $a,然後將 $a 的值減一。
遞增/遞減運算子
<?
echo "<h3>a++</h3>";
$a = 5;
echo "應該是 5: ".$a++."<br />\n";
echo "應該是 6: ".$a."<br />\n";
echo "<h3>++a</h3>";
$a = 5;
echo "應該是 6: ".++$a."<br />\n";
echo "應該是 6: ".$a."<br />\n";
echo "<h3>a--</h3>";
$a = 5;
echo "應該是 5: ".$a--."<br />\n";
echo "應該是 4: ".$a."<br />\n";
echo "<h3>--a</h3>";
$a = 5;
echo "應該是 4: ".--$a."<br />\n";
echo "應該是 4: ".$a."<br />\n";
?>
位元運算子
將整數視為二進位的字串來加以運算:
範例
名稱
結果
$a & $b
And(且)
將在 $a 和 $b 中都為 1 的位設為 1。
$a | $b
Or(或)
將在 $a 或者 $b 中為 1 的位設為 1。
$a ^ $b
Xor(互斥)
將在 $a 和 $b 中不同的位設為 1。
~ $a
Not(補數)
將 $a 中為 0 的位設為 1,反之亦然。
$a << $b
Shift left(左
移)
將 $a 中的位向左移動 $b 次(每一次移動都表示
“乘以 2”)。
$a >> $b
Shift right
(右移)
將 $a 中的位向右移動 $b 次(每一次移動都表示
“除以 2”)。
字串運算子
 有兩個字串運算符。
 第一個是連接運算符(.),前面介紹過。
 第二個是連接指定運算子(.=),它將右邊參數附加到
左邊的參數後。
<?
$a = "PHP程式設計";
$b = $a . "基礎班";
echo $b . "<BR>";
$c = "台中市";
$c .= "資訊網路中心";
echo $c;
?>
錯誤控制運算子
 錯誤控制運算符「@」。
 當將其放置在一個 PHP 運算式之前,該運算式可能產
生的任何錯誤資訊都被忽略掉。
 這功能有幾個目的:
1. 安全性:避免因程式上的某些錯誤訊息將一些訊息
告知了外界,而暴露系統上可能的安全漏洞。
2. 美觀:因為錯誤訊息會造成顯示畫面的混亂。
 需要啟動 track_errors 功能(也可事後在php.ini中修改),
運算式所產生的任何錯誤資訊會被存放在總體變數
$php_errormsg 中。
錯誤控制運算子
<?
?>
$a=10;
$b=0;
$c=@($a/$b);
echo “$c”;
echo “$php_errormsg”;
執行運算子
 執行運算符:反引號「` .... `」。注意這不是單引號!
 PHP 將嘗試將反引號中的內容作為shell命令來執行,並
將其輸出資訊返回。
<?
$output = `dir`;
echo "<pre> $output </pre>”;
?>
這只能在command文字命令模式下執行,不可透過Web Server
執行。
陣列運算子
 陣列運算子是「 +」 運算子。它把右邊的陣列附加到左
邊的陣列後,但是重複的索引值不會被覆蓋。
<?
$a = array(“1” => “一月”, “2” => “二月”);
$b = array(“1” => “星期一”, “2” => “星期二”, “3” => “星期三”);
$c = $a + $b;
var_dump($c); // var_dump( ) 是顯示變數內容的函數
?>
結果將會是:
array(3) { [1]=> string(4) "一月" [2]=> string(4) "二月" [3]=> string(6) "星期三" }
表示 $c 變數是array (陣列),裡面的元素中,索引值1是字串,字串長度是4,內容是"
一月",以下以此類推。
運算子優先順序
 運算子優先順序指定了兩個運算式有多“緊密”。
 例如,運算式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘
號(“*”)的優先順序比加號(“+”)高。
 必要時可以用括弧來強制改變優先順序。例如:(1 + 5)
* 3 的值為 18。
下表從低到高列出了運算子的優先順序。
運算子優先順序
優先等
級
高
↑
↓
低
結合方向
運算子
左
,
左
or
左
xor
左
and
右
print
左
= += -= *= /= .= %= &= |= ^= ~= <<= >>=
左
?:
左
||
左
&&
左
|
左
^
左
&
無
== != === !==
無
< <= > >=
左
<< >>
左
+-.
左
*/%
右
! ~ ++ -- (int) (float) (string) (array) (object) @
右
[
無
new