PHP 變數、常數與運算子 變數 常數 運算子 http://ycchen.im.ncnu.edu.tw/www2011/lab/plab1.zip.

Slides:



Advertisements
Similar presentations
七年级数学校本课程 台山市任远中学 李锦明. 1. 最古老的过河问题 1. 最古老的过河问题 一个农民携带一只狼,一只羊和一 箱卷心菜,要借助一条小船过河。 小船上除了农民只能再带狼、羊、 卷心菜中的一样。而农民不在时, 狼会吃羊,羊会吃菜。农民如何过 河呢?
Advertisements

說 劍 《莊子‧雜篇》─ 第 一 組 賴泊錞 謝孟儒 張維真 羅苡芸
《计算机网络技术》 动态网页制作技术 常用HTML控件课程积件 杨 姝.
德 国 鼓 励 生 育 的 宣 传 画.
第六章 网页设计与制作基础.
动态网站开发 【HTTP与网络基础】 李博杰
白玉苦瓜 余光中.
动态Web开发技术--JSP.
第 4 章 PHP 基本語法.
第五章 JSP内置对象 第4章学习了页面组成元素和使用方法。本章学习JSP内置对象的使用。使用JSP内置对象,可以方便操作页面,访问页面环境,实现页面内、页面间、页面与环境之间的通讯。 学习目标 熟悉主要内置对象的概念 理解主要内置对象的作用域和生命期 理解主要内置对象的作用和关系 熟悉主要内置对象的使用方法.
基于JSP搭建Web应用程序.
前进中的山东省昌乐二中.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
第3章 JavaScript语言基础.
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
电在我们日常生活、现代化社会中的应用: 电 是 什 么?.
CT212 (02/03)-Network Programming and design
Ch07 PHP程式基礎 網頁程式設計.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
PHP+MySQL互動式網頁程式設計班 PHP進階語法 講師:林業峻 CSIE, NTU 6/ 19, 2010.
PHP程式設計 二、HTML & PHP基本語法 建國科技大學 資訊管理學系 饒瑞佶.
Hello World 體驗實作第一個JSP程式.
Chap5 PHP程式設計進階 授課講師:.
成才之路 · 语文 人教版 · 必修2 路漫漫其修远兮 吾将上下而求索.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 9 章 常數.
第四章 網頁表單與資料傳遞.
留言版 1.先Create一個留言板的table
Introduction to PHP part3
PHP +MySQL快速入門 Lesson 4.
課程名稱:程式設計 授課老師:________
XSS & SQL Injection理論 2014/7/29 許子謙.
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
利用PHP將資料存入MySQL PHP 5 Tutorial 範例:
第3章 變數、資料型別與運算子.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 18 章 Cookie和 Session.
如何寫工程計畫書 臺北市童軍會考驗委員會 高級考驗營 版.
PHP+MySQL互動式網頁程式設計班 檔案上傳程式設計 講師:林業峻 CSIE, NTU 7 / 3, 2010.
檔案上傳 所謂檔案上傳,就是將檔案由客戶端的主機,藉 由瀏覽器傳送到伺服器的資料夾上。
PHP 程式流程控制結構.
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
表單(Form).
義守大學電機工程學系 陳慶瀚 第3章 VHDL Concurrent語法 義守大學電機工程學系 陳慶瀚
進階 WWW 程式設計 -- PHP 語言結構 靜宜大學資訊管理學系 蔡奇偉副教授 2003
架站實做—AppServ
HTML 103 互動式網頁.
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
PHP编程基础与实例教程 PHP Fundamentals & Practices
Ch09 在網頁之間傳遞資訊 網頁程式設計.
表單(Form).
第六章 迴圈與陣列.
第3章 PHP表达式.
HTTP 1.1 Method OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
HTML 103 互動式網頁 助教:黃毓瑩.
利用PHP將資料存入MySQL PHP 5 Tutorial 範例:
大綱:整數的加法 整數的減法 蘇奕君 台灣數位學習科技股份有限公司
第6章 PHP的数据采集.
第二章 基本数据类型 ——数据的表示.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
網頁設計實務- PHP 與資料庫整合.
第6章 PHP基本語法介紹.
HTML表单 JSP借由标签所构成的表单区块中,取得用户在其中特定字段输入的数据內容 。 JSP 动态网页新技术.
成本會計 在決策中的功能 第四課 1.
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

PHP 變數、常數與運算子 變數 常數 運算子 http://ycchen.im.ncnu.edu.tw/www2011/lab/plab1.zip

PHP 5 變數設定與常用指令 變數 變數命名 設定初始值 傳值設定(assign by copy) 傳址設定(assign by reference) 變數的種類 區域變數 全域變數 靜態變數 動態變數 預設變數 變數的型態轉換 讀取外部變數

變數命名 PHP5 變數命名規則如下: 在變數名稱上必須要儘量給予一個比較容易 瞭解意義的名稱。舉例來說: 變數一定以 '$' 為第一個字元 第二個字元必須為字母或底線('_') 第二個字元以後可以是下列字元的任意組合 底線 大寫、小寫英文字母(不同) 數字 ASCII 碼127 to 255 不可為保留字 在變數名稱上必須要儘量給予一個比較容易 瞭解意義的名稱。舉例來說: $a = $b * $c ; $area = $Length * $ Width ; (佳)

變數命名範例 變數名稱 說明 $name 合法 $Name 合法。但與$name是二個不同的變數 $_getScore $number6_person $Put_score $aBC $6person 不合法, 第二字元必須為字母或底線 $get-score 不合法, 不可以有'-'字元

PHP 保留字

設定初始值 指定立即值 指定運算式 將一個資料型態的值存入變數中 例如 將運算式計算的結果複製到變數中 $a = 10 ; $b = "Hello"; 指定運算式 將運算式計算的結果複製到變數中 $a = $X*$Y+2 ; $b = $c ;

傳值設定(assign by copy) 變數傳遞時也有兩種傳遞設定值的方式, 分別是 傳值設定與傳址設定兩種方式。 傳值設定就是將立即值或表示式運算所得的結 果複製到變數中。 $a=$b 是使用傳值設定, 會將 $b 的內容複製到目的變 數 $a 中。

傳值設定(assign by copy) 傳值設定範例 1: <html> 2: <title>傳值設定</title> 3: <body> 4: <?php 5: $a=10 ; 6: $b=$a ; 7: $b=$b+10 ; 8: echo "\$a=$a <br>" ; 9: echo "\$b=$b" ; 10: ?> 11: </body> 12: </html>

傳址設定(assign by reference) 傳址設定的方法不會複製變數的內容而是存入 變數的記憶體位址。 二個變數指向同一個記憶體空間。 若是要使用傳址設定的方式則必須在變數前再 加上一個 '&' 字元表示取得的是變數的位址而 並非變數的內容 $A = &$B;

傳址設定(assign by reference) 傳址設定 範例 1: <html> 2: <title>變數值設定</title> 3: <body> 4: <?php 5: $a = 10 ; // $a的值為10 6: $b = $a ; // $a的值複製給$b 7: $c = &$a ; // $a的記憶體位置給$c 8: echo "執行計算前 <br>"; 9: echo "A=$a <br>" ; 10: echo "B=$b <br>"; 11: echo "C=$c <p>"; 12: $b=$b+10 ; // $b的值加10 13: $c=$c+20 ; // $c的值加20 14: echo "執行計算後:<br>" ; 15: echo "A=$a <br>"; 16: echo "B=$b <br>" ; 17: echo "C=$c "; 18: ?> 19: </body> 20: </html>

變數的種類 程式中因為不同的需求而必須要撰寫自定函 數 (function),會使得程式碼在邏輯上被分割 成不同的區域。 每個區域可使用的變數種類可能不同: 全域變數可以在整個程式範圍內使用 (只有主程式的變數有變成全域變數的資格) 區域變數只能在函數內自己使用, 不能被其他函數 使用 靜態變數

區域變數 區域變數 在函數中定義使用的變數。它的使用範圍只 有在函數本身內使用。 函數一 函數二 主程式

區域變數 區域變數 範例 1: <?php 2: function MyFunction(){ 3: echo "<< 在函數中 >> <br>" ; 4: echo "設定前: <br>"; 5: echo "A = $a <br>" ; 6: echo "B = $b <p>" ; 7: $a=10 ; // 區域變數 8: $b=20 ; 9: echo "設定後: <br>"; 10: echo "A = $a <br>" ; 11: echo "B = $b <p>" ; 12: } 13: ?> 14: <html> 15: <title>區域變數</title> 16: <body> 17: <?php 18: $a = 1 ; // 全域變數 19: $b = 2 ; // 全域變數 20: MyFunction() ; 21: echo "<< 在函數外 >> <br> "; 22: echo "A = $a <br>" ; 23: echo "B = $b <p>" ; 24: ?> 25: </body> 26: </html> 區域變數 區域變數 範例

全域變數 在 PHP 中全域變數無法直接在函數中使用,在 函數中欲使用全域變數,需以在函數內宣告變 數為全域變數 宣告全域變數的方法有兩種: global 宣告 GLOBALS 陣列

全域變數 全域變數範例- global 宣告 若line 8 刪除會得何結果? 1: <?php 2: function SUM(){ 3: global $a, $b, $c ; 4: $c = $a+$b ; 5: echo "在 SUM() 中 \$c = $c <p>" ; 6: } 7: function AVG() { 8: global $c ; 9: $c = $c/2 ; 10: echo "在 AVG() 中 \$c = $c"; 11: } 12: ?> 13: <html> 14: <title>全域變數</title> 15: <body> 16: <?php 17: $a=1 ; 18: $b=2 ; 19: $c=0 ; 20: SUM() ; 21: AVG() ; 22: ?> 23:</body> 24: </html> 全域變數範例- global 宣告 8-7-new.php  講line 8 刪除、且$c 變成10 global 不可設值 若line 8 刪除會得何結果?

全域變數 全域變數範例- GLOBALS 陣列 1: <?php 2: function MyFunction() { 3: $GLOBALS["c"]=$GLOBALS["a"]+$GLOBALS["b"] ; 4: } 5: ?> 6: <html> 7: <title>GLOBALS陣列</title> 8: <body> 9: <?php 10: $a=1 ; 11: $b=2 ; 12: $c=0 ; 13: MyFunction() ; 14: echo "\$a=$a , \$b=$b , \$c=$c" ; 15: ?> 16: </body> 17: </html>

靜態變數 在函數中使用, 它的目的就是讓區域變數的值不 會因為函數結束而消失。 區域變數的生命週期: 從函數開始時產生, 當函數結束時立即消滅。 若要保存區域變數的值, 使用靜態變數(Static) 各函數間的static 變數是彼此無關連的

靜態變數範例 1: <?php 1: <?php 2: function addone() { 4: $I=$I+1 ; 5: echo "\$I = $I<br>" ; 6: } 7: ?> 8: <html> 9: <title>區段變數生命週期</title> 10: <body> 11: <?php 12: addone() ; 13: addone() ; 14: addone() ; 15: ?> 16: </body> 17: </html> 1: <?php 2: function addone() { 3: static $I=0 ; 4: $I=$I+1 ; 5: echo "\$I = $I<br>" ; 6: } 7: ?> 8: <html> 9: <title>區段變數生命週期</title> 10: <body> 11: <?php 12: addone() ; 13: addone() ; 14: addone() ; 15: ?> 16: </body> 17: </html>

動態變數 (不教授,僅供參考) 一般來說, 宣告變數時都是使用固定的名稱。 例如 $name 是一個代表姓名的變數 動態變數的方式可以讓變數的內容變成一個新 的變數,在變數前面再加上一個 “$” 即可成 為動態變數。(需注意動態變數陣列) 例: $name=”John” $$name=”Lee” ; ($) ($name)$John=”Lee”

1:<html> 2: <title>動態變數寫法</title> 3: <body> 4: <?php 5: $name="John" ; 6: $$name="Lee" ; 7: echo "1. $$name <br>" ; 8: echo "2. ${$name} <br>" ; 9: echo "3. ".$$name."<br>" ; 10: echo "4. ".${$name} ; 11: ?> 12: </body> 13: </html>

預設變數 php.ini中一個參數 register_globals , 它是設定 環境變數, GET 變數, POST 變數, Cookie 變數 以及伺服器變數是否為全域變數. 若 register_globals 設 定為 on 就表示各變數均 為全域變數, 在程式中就可以直接使用 register_globals 若設為 on,有安全疑慮。 Example: echo $uid; echo $_POST['uid']; login.html <form method="post" action="login.php"> User: <input type="text" name="uid" /> … </form> login.php

部分 $_SERVER 陣列中內容 'PHP_SELF' 目前執行的檔案名稱 'SERVER_NAME' 伺服器的名稱 'SERVER_SOFTWARE' 伺服器使用的軟體 'DOCUMENT_ROOT' 文件的根目錄 'HTTP_USER_AGENT' 使用者相關資訊 'REMOTE_ADDR' 遠端使用者的位址 'REMOTE_PORT' 遠端使用者的連線埠 在取得變數內容時, 以變數名稱為陣列索引 即可取得資訊,例如 'SERVER_NAME' 則可以 $_SERVER['SERVER_NAME'] 取得資訊

變數的型態轉換 PHP 變數的資料型態是由初始值的資料型態 來決定。 變數的資料型態轉換有兩種方式: 設定變數值 例如: $b = 12.3 $c = (int) $b; //$c=12 使用函數轉換 例如: settype($a, "integer") ; //將變數轉為整數型態 settype($a, "float") ; //將變數轉為浮點數型態

讀取外部變數 PHP 可利用讀取外部變數的方式,讀取使 用者輸入的資訊 除了取得使用者資訊外, 伺服器資訊、 Cookie、Session 等等對 PHP 來說都是屬於 外部變數或是全域變數

全域變數陣列 陣列 說明 $GLOBALS 目前程式碼範圍中有效的變數。 $_SERVER 和伺服器有關的變數, 陣列 說明 $GLOBALS 目前程式碼範圍中有效的變數。 $_SERVER 和伺服器有關的變數, $_GET 利用HTTP GET方式傳回的變數 $_POST 利用HTTP POST 方式傳回的變數 $_COOKIE 利用HTTP COOKIE 方式傳回的變數 $_FILES 上傳檔案時的變數 $_ENV 環境變數 $_REQUEST 讀取任何一種使用者輸入方式的變數 $_SESSION 讀取已註冊的SESSION變數 。 http://ycchen.im.ncnu.edu.tw/www2011/lab/serv.php

全域變數陣列應用 互動式網頁範例 <html> <title>表單輸入</title> <body> <h2>凱文瑞克公司線上訂購系統 </h2> ======= 客戶資料 =======<br /> <form action="extra.php" method="get"> 公司名稱 <input type="text" name="company" size="20"/><br/> 公司地址 <input type="text" name="address" size="20"><br/> 訂購產品數量 <input type="text" name="amount" size="5" /><br/> <input type="submit" value=" 填好了 " /> <input type="reset" value=" 重填 " /> </form> </body> </html>

全域變數陣列應用 互動式網頁範例 (get 有缺點) 1: <html> 2: <title>取得外部變數</title> 3: <body> 4: <?php 5: echo $_GET['company'] . "您好: <br/>" ; 6: echo "感謝貴公司訂購本公司產品" . $_GET['amount'] . "個," ; 7: echo "貨款共" . ($_GET['amount']*100) . "元整。<br/>" ; 8: echo "貨品將於三日內送達{$_GET['address']}<br/>" ; 9: echo "再次感謝您的愛護。<br/>" ; 10: echo "凱文瑞克公司 敬上" ; 11: ?> 12: </body> 13: </html>

常數、預設常數 一經程式定義後不會因為程式的執行而改變 其內容值, 這種形式我們稱之為常數 PHP 本身提供了許多預設常數供設計者使用 自定常數 PHP 本身提供了許多預設常數供設計者使用 例如 PHP_VERSION 和 PHP_OS 分別表示 PHP 的 版本與 PHP 目前執行的作業平台

自定常數 要自行定義常數時可使用 define() 函數。 常數名稱並不需要加上「$」符號。 常數的值只接受純量型別 (布林值、整數、浮點數 、 字串) 的資料型別。 常數在整個程式中僅能定義一次,也不能取消定義, 也不能計算。 define() 的格式如下: define (常數名稱, 常數值, [case_insensitive]) 例: define (HELLO_MSG,"Good morning, ") ; … $helloStr = HELLO_MSG . "Mr. Robinson";

運算子 算術運算子 (Arithmetic Operators) 指定運算子 (Assignment Operators) 位元運算子 (Bitwise Operators) 比較運算子 (Comparison Operators) 遞增遞減運算子 (Increment/Decrement Operators) 邏輯運算子 (Logic Operators) 錯誤控制運算子 (Error Control Operators) 字串運算子 (String Operators)

導讀 運算式 (expression) $a = $b + 10 ; 目的運算元 = 運算元 運算子 運算元 ;

算術運算子 算術運算子是最基本的數學運算子,主要就是 數值與變數之間的四則運算與取餘數。 算術運算子 功能 範例 + 加法 $a + $b - 減法 $a - $b * 乘法 $a * $b / 除法 $a / $b % 取餘數 $a % $b

指定運算子 " = " 是最基本的指定運算子。 程式語言中的 "=" 和數學上的 "=" 所代表的意義不同。 “=”可以看成是"指定 " 、 "存入" 的意思,並不是代 表數學中 "="的二邊是相等的意思。 指定運算子的功能是將 "="右邊的值 存入 " = " 左邊的 變數。 指定運算子 功能 範例 = 指定 $a = 10 ; $a = $b ; $a = $a + $b ;

指定運算子 運算式中的二個運算元若其中有一個為目的運 算元時可以簡寫。 例如: $a += 10 ; // 意即 $a = $a + 10 ; $b *= $c ; // 意即 $b = $b * $c ; $c .= "Hello" ; // 意即 $c = $c . "Hello"; 指定運算子還可以指定 "位址" 給目的運算元, 例如 $a=&$b,並無複製的動作。

邏輯運算子 邏輯運算只有真 (True) 及假 (False) 二個值。 邏輯運算子 AND OR NOT XOR

邏輯運算子的寫法 邏輯運算子 功能 範例 ! NOT !$a And AND $a and $b && $a && $b Or OR $a or $b || $a || $b Xor XOR $a xor $b

比較運算子 比較運算子提供二個數值、變數或運算間 判斷二者大小的運算,其結果必為真或假。 比較運算子 功 能 範 例 > 大於 功 能 範 例 > 大於 $a > $b == 等於 $a == $b < 小於 $a < $b >= 大於或等於 $a >= $b <= 小於或等於 $a <= $b != 不等於 $a != $b === 值與型態都相同 $a ===$b

遞增遞減運算子 PHP 提供了一個簡單的加/減 1寫法,而且可選 擇先加/減 1 再運算或先運算再加 1 或減 1。 (需注意 $a=$b+++$c) 遞增遞減運算子 功 能 範 例 ++$a 先加1再運算 $a = (++$b) - 10 $a++ 先運算再加1 $a = 10 * ($b++) --$a 先減1再運算 $a = (--$b) + 10 $a-- 先運算再減1 $a = 10 * ($b--)

位元運算子 以位元 (bit) 為單位的邏輯運算 十進制轉二進制 在邏輯運算時 1 代表真, 0 代表假。例如 邏輯運算時 1 and 0 = 0, 1 or 1 = 1。 十進制 二進制 5 0000 0101 10 0000 1010 20 0001 0100

位元運算子 (移n位 = *2n ) (移n位 = /2n ) 位元運算子 功能 範例 & AND各位元 $a & $b | OR 各位元 ^ XOR 各位元 $a ^ $b ~ NOT 各位元 ~$a << 向左移n位元 $a << 3 >> 向右移n位元 $a >> 3 (移n位 = /2n )

字串運算子 字串的操作比較簡單,只有一個串接運算 子。 字串運算子 功能 範例 . 連接字串 $a . "Hello"

錯誤控制運算子 在運算式的前面加上一個”@”符號 如果發生錯誤時不會將錯誤訊息顯示於網頁 在 php.ini 檔案中將 track_errors 設定為 on (預設值為off) 則錯誤訊息仍然會存放 於 $php_errormsg 中 1: <?php 2: $a=10; 3: $b=0; 4: $c=@($a/$b); 5: echo "$c"; 6: echo "Error mssage : $php_errormsg"; 7: ?>

運算子之優先序 順序 運算子 1 ! ~ ++ -- (int) (float) (string) (array) (object) @ 2 * / % 3 + - . 4 << >> 5 > >= < <= 6 == != === 7 & 8 ^ 9 | 10 && 11 || 12 ?: 13 = 14 and 15 xor 16 Or