PHP 5 陣列與自定函數 陣列應用 自定函數.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

白玉苦瓜 余光中.
第4章 VB.NET程式與 網頁製作的應用 主講人: 姚奉緒 M
第七章 副程式.
第5章 排序与查找 PART A 《可视化计算》.
输出数组 Result: Array (     [0] => zzu     [1] => php     [2] => MySQL     [3] => javascript     [4] => html     [5] => css )
Chapter 7 Subroutine and Function
Advisor: Quincy Wu Speaker: Kuan-Ta Lu Date: July 8, 2010
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 13 章 陣列應用.
Visual C++ introduction
程式設計(二) 參考書目: 1. 洪維恩,C++ 教學手冊 第三版,旗標出版圖書公司。 2
物件導向程式設計 (Object-Oriented rogramming)
樹狀結構 陳怡芬 2018/11/16 北一女中資訊專題研究.
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
Ch10 函式 網頁程式設計.
第5章 PHP数组.
第五讲 数据的分组、合并与转换.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 18 章 Cookie和 Session.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
Chapter 7 指標.
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 程式流程控制結構.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
程式語言Visual Basic 傳址與傳值
Ch05 VB.NET的程序與函數 網頁程式設計.
進階 WWW 程式設計 -- PHP 語言結構(三) 靜宜大學資訊管理學系 蔡奇偉副教授 2003
Java 程式設計 講師:FrankLin.
Introduction to the C Programming Language
Introduction to the C Programming Language
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
PHP 變數、常數與運算子 變數 常數 運算子
樹 2 Michael Tsai 2013/3/26.
|12 結構與列舉型態.
第一單元 建立java 程式.
進階 WWW 程式設計 -- PHP 語言結構 靜宜大學資訊管理學系 蔡奇偉副教授 2003
Chapter 5 Recursion.
|07 函數.
Guide to a successful PowerPoint design – simple is best
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
第六章 迴圈與陣列.
Speaker: Liu Yu-Jiun Date: 2009/4/29
第十章 指標.
GUI Title and GUI Status
網頁設計 清單設計 Instructor: Reporter:楊政勳 Date:
第7章 指標 7-1 指標的基礎 7-2 指標變數的使用 7-3 指標運算 7-4 指標與陣列 7-5 指向函數的指標.
挑戰C++程式語言 ──第8章 進一步談字元與字串
HTML 103 互動式網頁 助教:黃毓瑩.
向量 (vector) 就是典型的一維陣列,而更高維的矩陣,例如矩陣 (matrix) 和張量 (tensor) 則分別是二維和三維的陣列。
函數 博碩文化出版發行.
C qsort.
Disjoint Sets Michael Tsai 2013/05/14.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 14 章 自定函數.
函數應用(二)與自定函數.
陣列與結構.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
進階 WWW 程式設計 -- PHP Array 靜宜大學資訊管理學系 蔡奇偉副教授
實習八 函式指標.
網頁設計實務- PHP 與資料庫整合.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
Introduction to the C Programming Language
Chapter 6 函數.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 12 章 迴圈指令.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

PHP 5 陣列與自定函數 陣列應用 自定函數

陣列應用 所謂的陣列就是指集合相同屬性的變數所成 的集合,可分成一維陣列、二維陣列… 一維陣列表示方式 $陣列名稱[指標] 範例:$Name[0] = "Joe" ; $Name[1] = "Ken" ; $Name[2] = "Cherry" ; $Name[3] = "Maggy";

陣列應用 多維陣列表示方式 設定陣列的初始值 直接設定 函數設定 二維: $陣列名稱[指標1] [指標2] = 值 三維: $陣列名稱[指標1] [指標2] [指標3] = 值 四維: $陣列名稱[指標1] [指標2] [指標3] [指標4] = 值 設定陣列的初始值 直接設定 $a[1]=20; $a[]=30;  存入陣列「最尾端」 函數設定 陣列名稱 = array(第0元素, 第1元素, 第2元素, ...)  需依序指定值 陣列名稱 = array(0 =>第0元素, 1 =>第1元素, ...)  可依index指定 (有實例)

陣列應用 設定二維陣列初始值 $陣列名稱 = array( 0 => array( 0 => 第0列第0行的值 1 => 第0列第1行的值 2 => 第0列第2行的值 ) , 1 => array( 0 => 第1列第0行的值, 1 => 第1列第1行的值, 2 => 第1列第2行的值 ), 以此類推 ... ) ;

$arr3x4[2][1] $arr3x4 = array( array("a1", "a2", "a3", "a4"), b1, b2, b3, b4 c1, c2, c3, c4 $arr3x4[2][1] $arr3x4 = array( array("a1", "a2", "a3", "a4"), array("b1", "b2", "b3", "b4"), array("c1", "c2", "c3", "c4"));

<?php $arr2d = array(array(1,2,3), array(4,5,6), array(7,8,9)); for ($i=0; $i<count($arr2d); $i++) { for ($j=0; $j<count($arr2d[$i]); $j++) { echo "($i, $j) = {$arr2d[$i][$j]} <br/>"; } echo "<hr/>"; ?>

Associative Array 可使用文字指標如下: 1: <?php 2: $a=array( "Mon" => "星期一", 3: "Tue" => "星期二", 4: "Wed" => "星期三"); 5: foreach ($a as $k => $v) 6: echo "A[ $k ] = $v <br>"; 7: ?>

Associative Array (Example) <?php $prod["p001"]= array("Sony 16G隨身碟", 1200); $prod["p002"]= array("Asus 802.11g基地台", 3100); $prod["p003"]= array("Acer 150G外接式硬碟", 2780); $prod["p004"]= array("Logitech 無線光學滑鼠", 1340); $prod["p005"]= array("iPhone 5S", 22100); echo "<ul>"; foreach ($prod as $pid => $pInfo) { echo "<li>產品: $pInfo[0], 售價: NT\$$pInfo[1], "; echo "<a href=\"addCart.php?id=$pid\">放入購物車</a></li>"; } echo "</ul>"; ?>

陣列存取範例 count函數: count()函數會傳回由 [陣列名稱] 所指定的陣列元素的個數。 <?php $s = array (0,15,10,20,17,3,8,10,15,12) ; $cnt=count($s); for ($i=1 ; $i<$cnt; $i++){ echo "銷售員$i : " ; $s[0]+=$s[$i] ; $p=$s[$i]*20; echo "<img src=\"line.png\" width=\"$p\" height=\"10\">"; echo " $s[$i]<br/>\n" ; } echo "總量: $s[0]" ; ?>

array相關函數 http://www.w3schools.com/PHP/php_ref_array.asp Function Description array() Creates an array range() Creates an array containing a range of elements array_merge() Merges one or more arrays into one array array_search() Searches an array for a given value and returns the key in_array() Checks if a specified value exists in an array array_key_exists() Checks if the specified key exists in the array array_unshift() Adds one or more elements to the beginning of an array array_shift() Removes the first element from an array, and returns the removed value. array_slice() Returns selected parts of an array array_splice() Removes and replaces specified elements of an array array_pop() Deletes the last element of an array array_push() Inserts one or more elements to the end of an array array_rand() Returns one or more random keys from an array

Function Description array_sum() Returns the sum of the values in an array array_product() Calculates the product of the values in an array array_unique() Removes duplicate values from an array array_values() Returns all the values of an array array_keys() Returns all the keys of an array count() Counts elements in an array, or properties in an object sizeof() Alias of count() list() Assigns variables as if they were an array each() Returns the current key and value pair from an array

Function Description current() Returns the current element in an array pos() Alias of current() key() Fetches a key from an array next() Advance the internal array pointer of an array prev() Rewinds the internal array pointer reset() Sets the internal pointer of an array to its first element end() Sets the internal pointer of an array to its last element

Array Sorting Function Description sort() Sorts an array rsort() Sorts an array in reverse order asort() Sorts an array and maintain index association arsort() Sorts an array in reverse order and maintain index association ksort() Sorts an array by key krsort() Sorts an array by key in reverse order natsort() Sorts an array using a "natural order" algorithm natcasesort() Sorts an array using a case insensitive "natural order" algorithm

自定函數 建立函數 參數的傳遞 預設參數值

建立函數 自定函數的格式如下 function 自定函數名稱 ($arg1, $arg2, ... $argn) { 函數敘述 ; return 函數返回值 ; }

建立函數 自定函數範例 1: <?php 2: function Pay($price, $amount) { 3: echo "價格 : $price <br> 數量 : $amount <br>\n"; 4: echo "金額: ".$price * $amount."<p>" ; 5: } 6: ?> 7: <html> 8: <title>自定函數</title> 9: <body> 10: <?php 11: $Price=90 ; 12: $amount=100 ; 13: Pay($Price, $amount) ; //第一次呼叫函數 14: $Price=60 ; 15: $amount=50 ; 16: Pay($Price, $amount) ; //第二次呼叫函數 17: ?> 18: </body> 19: </html>

函數有多個回傳值 一般自定函數都只能有「單一回傳值」, 而PHP 中可利用list 函數接收「多個回傳值。 範例: 1: <?php 2: function message() { 3: echo "函數回傳三個數值.<p>"; 4: return array("Hello", "My", "friend"); 5: } 6: ?> 7: <html> 8: <title>多個回傳值</title> 9: <body> 10: <?php 11: list($msg1, $msg2, $msg3) = message(); 12: echo "主程式接收多個訊息如下<br>"; 13: echo "$msg1 $msg2 $msg3"; 14: ?> 15: </body> 16: </html>

Example <?php function cmp($a,$b) { if ($a<=$b) return array($a, $b); else return array($b, $a); } list($s,$g) = cmp(5,2); echo "$s is smaller than $g"; ?>

自定函數-參數的傳遞 傳址呼叫 (Call By Value) 傳值呼叫的方式是由主程式傳遞變數的值給自 訂函數的參數 傳值呼叫 (Call By Reference) 傳址呼叫是傳入變數的位址而不是值, 函數參數是接 受主程式傳來的一個位址。因此參數會指向原變數 由於 PHP 5 的預設值不予許使用 call by reference, 需修改 php.ini之 allow_call_time_pass_reference = On 設定為 on才可以使用.

自定函數-參數的傳遞 <?php function Pay($Price, $amount, $Total) { echo "=========== in Function Pay ======== <br/>" ; echo "Price : $Price <br/> Amount : $amount <br/>\n"; $Total=$Price * $amount ; echo "Total in Function Pay : $Total <p>\n" ; } ?> <html> <title>傳值呼叫</title> <body> $Price=90 ; $amount=100 ; $Total=0 ; Pay($Price, $amount, $Total) ; echo "============== in Main ===========<br/>" ; echo "Total in main : $Total<br/>" ; </body> </html>

自定函數-參數的傳遞 傳址呼叫 (Call By Reference)-Type 1 放 function 定義的參數: ‘&’ 寫在函數參數列。 1: <?php 2: function Pay($Price, $amount, &$Total) { 3: echo "=========== in Function Pay ========== <br>" ; 4: echo "Price : $Price <br> Amount : $amount <br>\n"; 5: $Total=$Price * $amount ; 6: echo "Total in Function Pay : $Total <p>\n" ; 7: } 8: ?> 9: <html> 10: <title>傳址呼叫</title> 11: <body> 12: <?php 13: $Price=90 ; 14: $amount=100 ; 15: $Total=0 ; 16: Pay($Price, $amount, $Total) ; 17: echo "============== in Main ==============<br>" ; 18: echo "Price : $Price <br> Amount : $amount <br>\n"; 19: echo "Total in main : $Total<br>" ; 20: ?> 21: </body> 22: </html>

自定函數-參數的傳遞 傳址呼叫 (Call By Reference)-Type 2 呼叫函數時決定如何傳遞參數:傳值或傳址呼叫。 1: <?php 2: function Pay($price, $amount, $total) { 3: echo "Price : $price Amount : $amount <br>\n"; 4: $total=$price * $amount ; 5: echo "Total in Function Pay : $total <br>\n" ; 6: echo "<p>\n" ; 7: } 8: ?> 9: <html> 10: <title>選擇傳遞方式</title> 11: <body> 12: <?php 13: $Price=90 ; 14: $amount=100 ; 15: $Total=0 ; 16: Pay($Price, $amount, $Total) ; 17: echo "Total in main : $Total <== 傳值呼叫<hr><p>\n" ; 18: Pay($Price, $amount, &$Total) ; 19: echo "Total in main : $Total <== 傳址呼叫<hr>" ; 20: ?> 21: </body> 22: </html>

預設參數值 預設參數值 注意事項: 在自訂函數撰寫時可以事先給予參數一個預設值, 當主 程式呼叫函數時有二種選擇。 主程式有傳值給函數: 則函數中參數值即以主程式傳 入的值代入。 主程式沒有傳值給函數: 則以函數將以函數定義的預 設值帶入參數。 預設參數值 注意事項: 第一點, 預設值必須是一個常數, 不可以是變數。 第二點, 預設值的參數必須是在參數列的右邊開始, 由右向左延 伸。這一點很容易理解, 如果有一函數如下  錯誤示範 function test ($a=10, $B)

預設參數值 範例 1: <?php 2: function Pay($price, $amount, $discount=0.8) { 3: echo "價格 : $price 元<br>" ; 4: echo "數量 : $amount 個<br>" ; 5: $showcnt=$discount*10 ; 6: echo "折扣 : $showcnt 折<br> " ; 7: return $price*$amount*$discount ; 8: } 9: ?> 10: <html> 11: <title>預設參數</title> 12: <body> 13: <?php 14: $Price=100 ; 15: $amount=8 ; 16: echo "特別折扣:<br>" ; 17: $Discount=0.5 ; 18: $cost=Pay($Price, $amount, $Discount) ; //傳入$Discount參數 19: echo "總價 : $cost 元<p>\n" ; 20: echo "一般折扣:<br>" ; 21: $cost=Pay($Price, $amount) ;//未傳入$Discount, 以預設值帶入 22: echo "總價 : $cost 元" ; 23: ?> 24: </body> 25: </html>

可變長度參數 一種參數傳輸技巧, 可不需先行宣告自訂函數的 參數值 配合可變長度參數擷取參數時所使用的函數. func_num_args() 會傳回傳入參數的個數. func_get_ars(n) 會傳回第 n 個參數, 參數是由第 0 個開 始計算. 如果 n 值大於參數個數則會傳回 False. func_get_args() 將所有參數以陣列方式傳出.

可變長度參數範例 1: <?php 2: function var_len(){ 3: $n=func_num_args(); 4: echo "總共傳入".$n."個參數<br/>"; 5: echo "參數內容如下<br/>"; 6: $op=func_get_args(); 7: for ($i=0; $i<$n; $i++){ 8: echo "- $op[$i] <br/>"; 9: } 10: } 11: ?> 12: <html> 13: <title>可變長度參數</title> 14: <body> 15: <?php 16: echo "2個參數 <br/>"; 17: var_len(10,20); 18: echo "<p>"; 19: echo "3個參數 <br/>"; 20: var_len("Hello","My","Friend"); 21: ?> 22: </body> 23: </html>