540 likes | 680 Views
Array in PHP. อะเรย์ (Array). อะเรย์หรือตัวแปรชุด คือ ตัวแปรที่สามารถเก็บค่าได้หลายๆค่า โดยใช้ตัวแปรตัวเดียว สิ่งที่อยู่ภายในอะเรย์เรียกว่าสมาชิก แต่ละสมาชิกในอะเรย์จะมีอินเด็กซ์เพื่อใช้อ้างอิง อินเด็กซ์ใช้อ้างอิงถึงแต่ละสมาชิกที่อยู่ในอะเรย์
E N D
อะเรย์ (Array) • อะเรย์หรือตัวแปรชุดคือตัวแปรที่สามารถเก็บค่าได้หลายๆค่า โดยใช้ตัวแปรตัวเดียว • สิ่งที่อยู่ภายในอะเรย์เรียกว่าสมาชิก แต่ละสมาชิกในอะเรย์จะมีอินเด็กซ์เพื่อใช้อ้างอิง • อินเด็กซ์ใช้อ้างอิงถึงแต่ละสมาชิกที่อยู่ในอะเรย์ • ใน PHP อินเด็กซ์จะเริ่มที่ 0 แต่สามารถกำหนดอินเด็กซ์ให้เป็นตัวอักษรได้
ตัวอย่าง <html> <body> <? $arr[0] = "Red"; $arr[1] = "Green"; $arr[2] = "Blue"; $arr[3] = "White"; echo " $arr[0] , $arr[1] ,$arr[2] ,$arr[3] "; ?> </body> </html>
อะเรย์ (Array) • ใน PHP อะเรย์ที่มีขนาดเปลี่ยนแปลงได้เรียกว่า dynamic arrayหรือ vector(สำหรับอะเรย์มิติเดียว) $myarray[]=3; $myarray[]=1.1; $myarray[]="abc"; • ขนาดจะปรับเปลี่ยนได้คือขยายจำนวนข้อมูลที่เก็บอยู่ภายในอะเรย์ • ข้อมูลแต่ละตัวในอะเรย์ไม่จำเป็น ต้องเป็นข้อมูลชนิดเดียวกัน เช่นอาจจะมีทั้งจำนวนเต็ม เลขทศนิยม
ตัวอย่าง <? $arr[0] = "Chair"; $arr[1] = 20; $arr[2] = 3.37; $arr[3] = "A"; $all = count( $arr ); for ($i=0; $i<$all; $i++){ print "Member $i =$arr[$i] <BR>"; } ?>
การสร้างอะเรย์เพื่อนำไปใช้งานการสร้างอะเรย์เพื่อนำไปใช้งาน • ไม่จำเป็นต้องประกาศตัวแปร • ค่าของอะเรย์จะ ถูกกำหนดให้ตอนที่ โปรแกรมทำงาน (Run time) <? $arr[] = "Red"; $arr[] = "Green"; $arr[] = "Blue"; $arr[] = "White"; ?>
การสร้างอะเรย์เพื่อนำไปใช้งานการสร้างอะเรย์เพื่อนำไปใช้งาน <? $arr[10] = 100; $arr[5] = 200; $arr[40] = 300; ?>
การสร้างอะเรย์โดยใช้ฟังก์ชันarrayการสร้างอะเรย์โดยใช้ฟังก์ชันarray • รูปแบบ arrayarray([mixed…]) <? $arr = array( 5,6,7,4,3,2,10,3,440 ); $all = count( $arr ); for ($i=0;$i<$all;$i++){ print "$arr[$i] "; } ?>
ตัวอย่าง $arr=arrray(10,20,30.30,"PHP","PROGRMMING"); for($r=0; $r < count($arr) ; $r++){ echo ("index $r = $arr[$r]<br>"); }
การสร้างอะเรย์โดยใช้ฟังก์ชันrangeการสร้างอะเรย์โดยใช้ฟังก์ชันrange • รูปแบบ arrayrange(int low, int high) • ตัวอย่าง <? $arr = range( 6,10); $all = count( $arr ); for ($i=0;$i<$all;$i++){ echo "arr[" .$i. "] = "; echo $arr[$i] ; echo "<BR>"; } ?>
การนำข้อมูลจาก Text file มาเก็บไว้ใน Array • ข้อมูลที่เก็บในแต่ละบรรทัดคือ ข้อมูลในแต่ละ Element ตย. <? $des=file("text.txt"); $count_des=count($des); if($count_des==0) echo “ไม่มีข้อมูลในFile <br>”; for ($i=0;$i<$count_des;$i++) echo $des[$i].“br>”; ?>
การเข้าถึงข้อมูลในอะเรย์การเข้าถึงข้อมูลในอะเรย์ • การอ้างตำแหน่งของอินเด็กซ์ เช่น $arr[3]="php"; • ใช้ ข้อความสั่ง for เช่น for ($i=0;$i<4;$i++){ echo $arr[$i]."<BR>"; }
<HTML> <HEAD><TITLE>Figure 5-2</TITLE></HEAD> <BODY> <? $Cities[] = "San Francisco"; $Cities[] = "Los Angeles"; $Cities[] = "New York"; $Cities[] = "Martinez"; //count number of elements $indexLimit = count($Cities); // print out every element for($index=0; $index < $indexLimit; $index++) { print("City $index is $Cities[$index]. <BR>\n"); } ?> </BODY> </HTML> City 0 is San Francisco. City 1 is Los Angeles. City 2 is New York. City 3 is Martinez.
การใช้อะเรย์หลายมิติ(Multidimensional Array) • กำหนดชื่อตัวแปรแล้วตามด้วยเครื่อง [..][..] สำหรับอะเรย์สองมิติและ [.. ][.. ] [.. ] สำหรับอะเรย์สามมิติ $arr_2[1][1] =4000; //$arr_2 เป็นอะเรย์สองมิติ $arr_3[1][1][1] = 2000; //$arr_3 เป็นอะเรย์สามมิติ
การใช้อะเรย์หลายมิติ (ต่อ) $dim = 3; for ($row=0; $row <= $dim; $row++) { for ($column=0; $column <= $dim; $column++) { $myarray2[$row][$column] = 4*$row + $column; echo $myarray2[$row][$column]," "; } echo "<BR>\n"; }
อะเรย์แบบคู่ • การเก็บข้อมูลในอะเรย์แบบนี้จะใช้กับข้อมูลที่จัดเก็บเป็นคู่ๆ • ใช้ทำ lookuptable
อะเรย์แบบคู่ (ต่อ) • สมมุติว่า "red" ให้แทนค่า 0xff0000 "green" ให้แทนค่า 0x00ff00และ "blue" ให้แทนค่า 0x0000ff โดยเก็บไว้ในอะเรย์ชื่อ $color_table • คำสั่งที่ใช้ $color_table["red"] = 0xff0000; $color_table["green"] = 0x00ff00; $color_table["blue"] = 0x0000ff; $color_name= "red"; echo "value = ".$color_table[ $color_name]."<BR>\n";
อะเรย์แบบคู่ (ต่อ) • สร้างอะเรย์แบบคู่ได้โดยใช้ฟังก์ชัน array () • จากตัวอย่างที่แล้วเราสามารถสร้างอะเรย์แบบคู่ได้โดยใช้ฟังก์ชัน array () ดังนี้ $color_table = array( "red" => 0xff0000, "green" => 0x00ff00, "blue" => 0x0000ff );
ตัวอย่าง <? $word[a] = "Ant"; $word[b] = "Bat"; $word[c] = "Cat"; $word[d] = "Dog"; print( "$word[d] , $word[a]"); print ("<BR>"); print( "$word[a] , $word[b]"); ?> หรือ <? $word = array( "a" => "Ant" , "b" => "Bat" , "c" => "Cat" , "d" => "Dog" ); print( "$word[d] , $word[c]"); print ("<BR>"); print( "$word[b] , $word[a]"); ?>
ตัวอย่าง • จากตัวอย่าง a,b, c, d จะเรียกว่า key และ Ant, Bat , Cat,Dog จะเรียกว่า Value • การแสดงค่า key และ value ของอะเรย์แบบคู่จะใช้ฟังก์ชันชื่อ key และ value เช่น <? $keep_age = array( "wichai" => 15 , "jira" => 18 , "wittawat" => 30 , "chuchai" => 16 ); $name =key($keep_age); $age =current($keep_age); print ("Age of <u>$name</u> is $age"); ?>
เราสามารถสร้างอะเรย์แบบเชื่อมโยงเป็นสองมิติได้ เช่น <? $countries = array ( "thailand" => array ( "zone" => "Asia", "D_NAME" => ".th"), "malasia" => array ( "zone" => "Asia", "D_NAME" => ".my"), "india" => array ( "zone" => "Asia", "D_NAME" => ".in"), "holland“ => array ( "zone" => "Europe", "D_NAME" => ".nl"), "france" => array ( "zone" => "Europe", "D_NAME" => ".fr")); echo "domain name=".$countries[ "thailand"]["D_NAME"]."<BR>\n"; ?>
การท่องไปในอะเรย์แบบคู่การท่องไปในอะเรย์แบบคู่ • ถ้าเราต้องการจะเข้าถึงข้อมูลแต่ละคู่ที่ถูกเก็บอยู่ในอะเรย์แบบคู่จะใช้วิธีเรียกผ่านฟังก์ชัน each() และ list() • ฟังก์ชัน each()จะท่องไปในอะเรย์และส่งค่ามาให้ฟังก์ชัน list() กำหนดให้กับตัวแปร 2 ตัว
ตัวอย่าง unset($a); $a = array( "a" => 10, "b" => 20, "c" => 30 ); while (list($key, $value) = each($a)) { echo "$key=$value <BR>\n"; } จะได้ผลลัพธ์ a=10 ,b=20 ,c=30
ตัวอย่าง <? $keep_age = array( "wichai" => 15 , "jira" => 18 , "wittawas" => 30 , "chuchai" => 16 ); while ( list( $name , $age ) = each( $keep_age ) ){ print(" $name = $age<br>"); } ?>
ฟังก์ชันที่เกี่ยวกับArrayฟังก์ชันที่เกี่ยวกับArray
ฟังก์ชัน sort • รูปแบบการใช้งาน void sort (array arr); • เป็นฟังก์ชันที่ใช้ในการเรียงลำดับรายการข้อมูลในอะเรย์นั้นโดยจัดเรียงข้อมูลจากค่าน้อยไปหาค่ามาก
ตัวอย่าง $sort = array(50,40,30,20); sort($sort); for($r = 0; $r < count($sort);$r++){ echo “$sort[$r]<br>”; } 20 30 40 50
ฟังก์ชัน asort • รูปแบบการใช้งาน void asort (array arr); • เป็นฟังก์ชันที่ใช้ในการเรียงลำดับข้อมูลในอะเรย์แบบคู่ โดยจัดเรียงข้อมูลจากค่าValue ที่เก็บไว้จากน้อยไปหาค่ามาก
ตัวอย่าง <? $keep_age = array( "wichai" => 15 , "jira" => 18 , "wittawas" => 30 , "chuchai" => 16 ); asort( $keep_age ); do{ $name = key( $keep_age ); $age = current( $keep_age ); print "age of $name is $age<br>"; }while( next( $keep_age) ); ?>
ฟังก์ชัน ksort • รูปแบบการใช้งาน void ksort (array arr); • เป็นฟังก์ชันที่ใช้ในการเรียงลำดับข้อมูลในอะเรย์แบบคู่ โดยจัดเรียงข้อมูลจากค่าkey ที่เก็บไว้จากน้อยไปหาค่ามาก
ตัวอย่าง <? $keep_age = array( "wichai" => 15 , "jira" => 18 , "wittawas" => 30 , "chuchai" => 16 ); ksort( $keep_age ); do{ $name = key( $keep_age ); $age = current( $keep_age ); print "age of $name is $age<br>"; }while( next( $keep_age) ); ?>
ฟังก์ชัน max, min • รูปแบบการใช้งาน max(array arr); min(array arr); • ฟังก์ชัน max ใช้ในการหาค่าสูงสุดและ min ใช้ในการหาค่าต่ำสุด <? $arr = array( 5,6,7,4,3,2,10,3,440 ); echo max( $arr) ,"<br>"; echo min( $arr) ,"<br>"; ?>
ฟังก์ชัน array รูปแบบการใช้งาน array array(); คำสั่งที่ใช้ในการสร้างอะเรย์โดยเราสามารถกำหนดค่าของดัชนีและค่าของข้อมูลไปพร้อมกับการสร้างอะเรย์ $test1=array(); //สร้างอะเรย์ว่าง $test1
ฟังก์ชัน array_walk • ฟังก์ชัน array_walk • รูปแบบการใช้งาน int array_walk(array arr,string func); • คำสั่งที่ใช้ในการเข้าถึงข้อมูลที่เก็บอยู่ในรูปแบบของอะเรย์โดยต้องการอากิวเมนต์สองตัวคือ 1. อะเรย์ที่ต้องการเข้าถึงข้อมูลที่เก็บไว้ในอะเรย์นั้น 2. ชื่อของฟังก์ชันที่ต้องการเรียกใช้และต้องมีการสร้างฟังก์ชันโดยมีการกำหนดตัวแปรพารามิเตอร์คอยรับค่า
ฟังก์ชัน count • รูปแบบการใช้งาน void count (array arr); • คำสั่งที่ใช้นับจำนวนของข้อมูลที่เก็บอยู่ภายในรายการข้อมูลของอะเรย์นั้นว่ามีจำนวนข้อมูลทั้งหมดเท่าไร
ฟังก์ชัน current • รูปแบบการใช้งาน mixed current(array arr); • เป็นคำสั่งที่ใช้ในการคืนค่าของข้อมูลที่ตำแหน่ง พอยน์เตอร์(pointer)ชี้อยู่(ภายในรายการข้อมูลของอะเรย์จะมี pointer เป็นตัวระบุตำแหน่งปัจจุบันของข้อมูลนั้น)
ตัวอย่าง $sort=array(50,40,30,20); echo current($sort),"br>";//แสดงค่า 50 next($sort);//เลื่อน pointer ไปยังข้อมูลตัวต่อไป echo current($sort);//แสดงค่า 40
ฟังก์ชัน each • รูปแบบการใช้งาน array each (array arr); • คำสั่งที่ใช้ในการอ่านค่าข้อมูลของอะเรย์ทีละตัว เมื่ออ่านแล้ว pointer ที่ชี้ตำแหน่งของข้อมูลก็จะเลื่อนไปยังข้อมูลตัวถัดไป และค่าที่อ่านได้นั้นจะเก็บไว้ในอะเรย์อีกที
ตัวอย่าง $sort = array(5,40,30,20); $get = each($sort); /*ค่าใน $sort มาหนึ่งค่าแล้วเลื่อน pointer ไปยังข้อมูลตัวถัดไปโดย $get จะเป็นตัวแปรอะเรย์ที่รับค่าที่อ่านได้ */ echo “$get[0] => $get[1] <br>”; echo “$get[key] => $get[value]”;
ฟังก์ชัน end • รูปแบบการใช้งาน void end (array arr); • เป็นคำสั่งที่ใช้เลื่อน pointer ที่ชี้ตำแหน่งที่อยู่ของข้อมูลปัจจุบันไปยังตำแน่งที่อยู่สุดท้ายของรายการข้อมูลของอะเรย์นั้น
ตัวอย่าง $sort = array ( 50, 40, 30, 20 ); echo current($sort).”<br>”// แสดงค่า 50 end($sort); // เลื่อน pointer ไปยังข้อมูลตัวสุดท้าย echo current($sort); // แสดงค่า 20
ฟังก์ชัน key • รูปแบบการใช้งานฟังก์ชัน mixed key (array arr); • เป็นคำสั่งที่ใช้ในการตรวจสอบว่าตำแหน่งปัจจุบันอยู่ที่ pointer ชี้ข้อมูลในอะเรย์อยู่นั้นดัชนีของข้อมูลนั้นมีค่าเป็นอะไร
ตัวอย่าง $sort = array (“start”=>50,40,30,”stop”=>20); echo key($sort).”<br>”; // แสดงค่าดัชนีปัจจุบันที่ pointer ชี้อยู่ end($sort); // เลื่อน pointer ไปยังข้อมูลตัวต่อไป echo key($sort); // แสดงค่าดัชนีปัจจุบันที่ pointer ชี้อยู่ Start stop
ฟังก์ชัน list • รูปแบบการใช้งาน void list (var1,var2,…); • คำสั่งที่ใช้ในการรับค่าที่อ่านมาได้จากอะเรย์โดยจำนวนของตัวแปร (var1,var2,…) ที่ตั้งรับในคำสั่งนี้ขึ้นอยู่กับขนาดอะเรย์ที่ส่งค่ามาให้ว่าอะเรย์นั้นส่งค่าข้อมูลมาให้จำนวนกี่ค่า
ตัวอย่าง $arr = array(“A”=>10,”B”=>20,”C”=>30); while (list($key,$data)=each($arr)){ echo “$key =>$data<br>”; } A =>10 B =>20 C =>30
ฟังก์ชันnext • รูปแบบการใช้งาน mixed next(array arr) • เป็นคำสั่งที่ใช้เลื่อน pointer ให้ชี้ไปยังข้อมูลตัวถัดไปในรายการข้อมูลของอะเรย์
ตัวอย่าง $sort = array(50,40,30,20); echo current($sort).:”<br>”; // แสดงค่าข้อมูลปัจจุบัน next($sort); // เลื่อน pointer ไปยังข้อมูลตัวต่อไป echo current($sort); // แสดงค่าข้อมูลหลังจากเลื่อน pointer 50 40
ฟังก์ชัน prev • รูปแบบการใช้งาน mixed prev (array arr) • เป็นคำสั่งที่ใช้เลื่อน pointer ให้ชี้ไปยังข้อมูลตัวก่อนหน้านี้ที่มีการเลื่อน pointer มาในรายการข้อมูลของอะเรย์
ตัวอย่าง $sort = array(50,40,30,20); echo current($sort).”<br>”; // แสดงค่าข้อมูลปัจจุบัน next($sort); // เลื่อน pointer เดินหน้าไปยังข้อมูลตัวต่อไป echo current($sort).”<br>”; // แสดงค่าข้อมูลหลังจากเลื่อน pointer prev($sort); // เลื่อน pointer ถอยหลังไปยังข้อมูลตัวก่อนหน้านี้ echo current($sort); // แสดงค่าข้อมูลหลังจากเลื่อน pointer 50 40 50
ฟังก์ชัน reset • รูปแบบการใช้งาน void reset (array arr) • เป็นคำสั่งที่กำหนดค่าเริ่มต้นของ pointer ใหม่โดยให้มาเริ่มต้นที่ข้อมูลตัวแรกของรายการข้อมูลทั้งหมดไม่ว่าตอนนั้น pointer จะชี้อยู่ที่ข้อมูลใดก็ตาม