1 / 32

PHP: Hypertext Preprocessor

บทที่ 10 ( Array ). PHP: Hypertext Preprocessor. สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร. วัตถุประสงค์การเรียนรู้ประจำบท.

lynton
Download Presentation

PHP: Hypertext Preprocessor

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 10 (Array) PHP:Hypertext Preprocessor สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร

  2. วัตถุประสงค์การเรียนรู้ประจำบทวัตถุประสงค์การเรียนรู้ประจำบท เพื่อรู้จักกับอาร์เรย์ ซึ่งเป็นชนิดข้อมูลแบบหลายค่า (Compound Type) กล่าวคือ ตัวแปรอาร์เรย์ 1 ตัว สามารถเก็บค่าหรือข้อมูลไว้ได้มากกว่า 1 ค่าพร้อมกัน

  3. กิจกรรมการเรียนการสอนกิจกรรมการเรียนการสอน • บรรยายโดยผู้สอนและใช้เอกสารประกอบการสอนของผู้สอน • สอนโดยใช้สื่อคอมพิวเตอร์ผ่านเครื่องฉาย • อภิปรายในชั้นเรียนร่วมกัน • ให้นิสิตค้นคว้าเพิ่มเติมจากตำราและเอกสารที่เกี่ยวข้อง • ทำแบบฝึกหัดท้ายบท

  4. การประเมินผล • ประเมินผลจากการตอบคำถามและอภิปรายในชั้นเรียน • ทำแบบฝึกหัดท้ายบท • ทำรายงานส่ง

  5. พื้นฐานเกี่ยวกับอาร์เรย์ในภาษา PHP อาร์เรย์ (Array)คือ กลุ่มของค่าหรือข้อมูลที่เกี่ยวข้องกันซึ่งถูกจัดเก็บไว้ภายใต้ชื่อตัวแปรหนึ่งๆ ข้อมูลในอาร์เรย์อาจเป็นชื่อนักเรียนทั้งหมดในชั้น รายการข้อมูลทั้งหมดที่ดึงมากจากฐานข้อมูล ฯลฯ ซึ่งมีคำศัพท์ที่ต้องทำความเข้าใจ 2 คำคือ • สมาชิก (Element) หมายถึง แต่ละค่า/ข้อมูลที่เก็บอยู่ในอาร์เรย์ • คีย์ (Key) หรือ อินเด็กซ์ (Index) หมายถึงค่าที่ใช้ระบุตำแหน่งของสมาชิกในอาร์เรย์

  6. Numerically Indexed Array กับ Associative Array ภาษา PHP อนุญาตให้กำหนดคีย์ของอาร์เรย์เป็นค่าจำนวนเต็มหรือค่าสตริงก็ได้ โดยอาร์เรย์ที่มีคีย์เป็นค่าจำนวนเต็ม เรียกว่า Numerically Indexed Array ส่วนอาร์เรย์ที่มีคีย์เป็นค่าสตริง เรียกว่า Associative

  7. การสร้างอาร์เรย์ การสร้าง Numeric Array (วิธีที่ 1) <? $weekdays = array(“อาทิตย์”,”จันทร์”,”อังคาร”,”พุธ”,”พฤหัส”,”ศุกร์”,”เสาร์”); ?>

  8. การสร้างอาร์เรย์ การสร้าง Numeric Array (วิธีที่ 2) <? $weekdays[0] = “อาทิตย์”; $weekdays[1] =”จันทร์”; $weekdays[2] =”อังคาร”; $weekdays[3] =”พุธ”; $weekdays[4] =”พฤหัส”; $weekdays[5] =”ศุกร์”; $weekdays[6] =”เสาร์”; ?>

  9. การสร้าง Associative Array สำหรับการสร้าง Associative Array ก็ทำได้ทั้งการใช้คำสั่ง array และการทยอยกำหนดค่าให้แก่ตัวแปรอาร์เรย์เช่นเดียวกับ Numeric Array เพียงแต่จะมีรูปแบบแตกต่างไปเล็กน้อย <? //สร้าง associative Array โดยใช้คำสั่ง Array $weekdays2 = array(“sun” => “อาทิตย์”,“mon” => ”จันทร์”, “tue” => ”อังคาร”,“wed” => ”พุธ”, “thu” => ”พฤหัส”,“fri” => ”ศุกร์”, “sat” => ”เสาร์”); // สร้าง associative Array โดยทยอยกำหนดค่าให้แก่ตัวแปรอาร์เรย์ $weekdays3[“sun”]=”อาทิตย์”; $weekdays3[“mon”]=”จันทร์”; $weekdays3[“tue”]=”อังคาร”; $weekdays3[“wed”]=”พุธ”; $weekdays3[“thu”]=”พฤหัสบดี”; $weekdays3[“fri”]=”ศุกร์”; $weekdays3[“sat”]=”เสาร์”; ?>

  10. การสร้าง Associative Array การสร้าง Associative Array ด้วยคำสั่ง array นั้น ต้องกำหนดคีย์และข้อมูลของแต่ละสมาชิกโดยใช้รูปแบบคีย์ => ข้อมูล ตัวอักษรที่อยู่ระหว่างคีย์กับข้อมูล คือ เครื่องหมายเท่ากับ ( = ) และเครื่องหมายมากกว่า ( > ) พิมพ์ติดกัน หมายเหตุ Associative Array อาจมีคีย์เป็นค่าสตริงปนกับค่าจำนวนเต็มก็ได้ เช่น $fruits = array (‘app’ => ‘แอปเปิ้ล’ , 3 => ‘ส้ม’, 12 => ‘สัปปะรด’ , ‘mgo’ => ‘มะม่วง’);

  11. การเข้าถึงสมาชิกของอาร์เรย์การเข้าถึงสมาชิกของอาร์เรย์ เมื่อต้องการเข้าถึงสมาชิกใดของอาร์เรย์ ให้พิมพ์ชื่อตัวแปรอาร์เรย์ ตามด้วยวงเล็บก้ามปู [ ] โดยระบุคีย์ของสมาชิกนั้นไว้ภายในวงเล็บ เช่น Echo $weekdays[1];คือการแสดงค่าของสมาชิกที่มีคีย์เท่ากับ 1 ของอาร์เรย์ $weekdays ออกมา หมายเหตุ สำหรับ Numeric Array ที่ PHP กำหนดคีย์ให้เองนั้น สมาชิกที่มีคีย์เท่ากับ 1 จะเป็นสมาชิกลำดับที่ 2 ของอาร์เรย์ เนื่องจาก PHP กำหนดคีย์ของสมาชิกตัวแรกเป็น 0 เสมอ

  12. การวนลูปเพื่อเข้าถึงสมาชิกทั้งหมดของอาร์เรย์การวนลูปเพื่อเข้าถึงสมาชิกทั้งหมดของอาร์เรย์ การทำงานกับอาร์เรย์ที่มักต้องทำอยู่บ่อยครั้ง ก็คือการเข้าถึงทุกๆ สมาชิกของอาร์เรย์ เพื่อดำเนินการอย่างใดอย่างหนึ่งกับสมาชิกแต่ละตัว PHP มีคำสั่ง foreachซึ่งเป็นคำสั่งสำหรับทำซ้ำหรือวนลูปอีกคำสั่งหนึ่ง คำสั่งนี้ใช้ทำงานกับอาร์เรย์ โดยจะวนลูปเป็นจำนวนรอบเท่ากับจำนวนสมาชิกของอาร์เรย์ และในแต่ละรอบจะช่วยให้เข้าถึงสมาชิกหนึ่งๆ ของอาร์เรย์ได้อย่างสะดวก รูปแบบ foreach(arr_expr as $key=>$value) statement

  13. การวนลูปเพื่อเข้าถึงสมาชิกทั้งหมดของอาร์เรย์การวนลูปเพื่อเข้าถึงสมาชิกทั้งหมดของอาร์เรย์ <? $products=array("T001"=>"ลูกฟุตบอล", "T002"=>"ลูกบาส", "T003"=>"ลูกตะกร้อ", "B001"=>"ลกเทสนิส", "C001"=>"ลูกปิงปอง", ); echo '<table border="1" width="100%">'; //เปิดตาราง echo "<tr><th>รหัสสินค้า</th><th>ชื่อสินค้า</th></tr>"; // หัวตาราง //วนลูปเพื่อเข้าถึงข้อมูลทั้งหมดในอาร์เรย์ $products foreach($products as $key=>$value) { echo "<tr><td>{$key}</td><td>{$value}</td></tr>"; //แถวข้อมูลของตาราง } echo "</table>"; //ปิดตาราง ?>

  14. วนลูปเพื่อเข้าถึงสมาชิกของ Numeric Array ด้วยคำสั่ง for สมมติว่าต้องการแสดงข้อมูลของสมาชิกต่างๆ ใน Numeric Array ออกมาตามลำดับของคีย์จากน้อยไปหามาก โดยใช้ foreachดังนี้ $letters[0]=’A’; $letters[1]=’B’; $letters[3]=’C’; $letters[2]=’D’; Foreach($letters as $letter){ Echo $letter; }

  15. วนลูปเพื่อเข้าถึงสมาชิกของ Numeric Array ด้วยคำสั่ง for เพื่อให้แน่ใจว่าการเข้าถึงสมาชิกของ Numeric Array จะเป็นไปตามลำดับความน้อย-มาก ของคีย์ จะต้องใช้คำสั่ง for แทน foreachตัวอย่างนี้จะให้ผลลัพธ์เป็น ABCD ตามต้องการ $letters[0]=’A’; $letters[1]=’B’; $letters[3]=’C’; $letters[2]=’D’; //ใช้ฟังก์ชั่น count หา (นับ) จำนวนสมาชิกของอาร์เรย์ $letters $n = count($letters); //วนลูปตั้งแต่ I เป็น 0 จนถึง n-1 เมื่อ n คือจำนวนสมาชิกของอาร์เรย์ For ($i=0;$i<$n;$i++) { Echo $letters[$i]; }

  16. การสร้างอาร์เรย์หลายมิติการสร้างอาร์เรย์หลายมิติ อาร์เรย์หลายมิติ หรือพูดง่ายๆ คืออาร์เรย์ที่มีสมาชิกเป็นอาร์เรย์นั้น จะมีประโยชน์เมื่อต้องการเก็บข้อมูลที่มีโครงสร้างซับซ้อนมากกว่ารูปแบบ “ 1 คีย์ต่อ 1 ข้อมูล”

  17. การสร้างอาร์เรย์หลายมิติการสร้างอาร์เรย์หลายมิติ $product = array( “T0001” => array(“name” => “ลูกฟุตบอล”,”price”=> 599), “T002” => array(“name” => “ลูกบาส”,”price”=> 2400), “T003” => array(“name” => “ลูกตะกร้อ”,”price”=> 500), “B001” => array(“name” => “ลูกเทสนิส”,”price”=>599), “C001” => array(“name” => “ลูกปิงปอง”,”price”=> 2000) );

  18. การเข้าถึงสมาชิกของอาร์เรย์หลายมิติการเข้าถึงสมาชิกของอาร์เรย์หลายมิติ <? $products=array("T0001" => array("name" => "บล้อคหยอดหมีพูห์","price" => 599), "T0004" => array("name" => "ตุ๊กตากบสอน ABC","price" => 2400), "T0005" => array("name" => "โต๊ะกิจกรรม","price" => 1690), "P0001" => array("name" => "กระดานลื่นสุขสันต์","price" => 9800), "B0001" => array("name" => "หนังสือมีเสียง: Pooh's Musical Party","price" => 550) ); echo $products["T0001"]["price"]."<br>"; echo $products["P0001"]["name"]."<br>"; echo "<pre>"; print_r($products["B0001"]);//ใช้วงเล็บก้ามปูชุดเดียว จะได้ค่าเป็นอาร์เรย์ชั้นใน echo "</pre>"; ?>

  19. การเข้าถึงสมาชิกของอาร์เรย์หลายมิติการเข้าถึงสมาชิกของอาร์เรย์หลายมิติ การเข้าถึงอาร์เรย์หลายมิติ ให้ใส่วงเล็บก้ามปูต่อท้ายชื่อตัวแปรอาร์เรย์ตั้งแต่ 1 ชุดขึ้นไป วงเล็บก้ามปูแต่ละชุดจะทำให้สามารถเข้าถึงอาร์เรย์แต่ละชั้นที่ลึกลงไปจากอาร์เรย์ชั้นนอกสุด

  20. การวนลูปเพื่อเข้าถึงสมาชิกทั้งหมดของอาร์เรย์หลายมิติการวนลูปเพื่อเข้าถึงสมาชิกทั้งหมดของอาร์เรย์หลายมิติ ให้ใช้คำสั่ง foreachหรือ for ซ้อนกันเป็นจำนวนชั้นเท่ากับจำนวนมิติของอาร์เรย์ เพื่อเข้าถึงข้อมูลทั้งหมดของอาร์เรย์หลายมิติ ดังตัวอย่าง echo "<tr><td>{$key}</td>"; //แสดงรหัสสินค้า ซึ่งเป็นคีย์ของ อาร์เรย์ชั้นนอก //วนลูปเพื่อแสดงข้อมูลของอาร์เรย์ชั้นใน ข้อมูลแรกคือชื่อสินค้า ข้อมูลที่สองคือ ราคาสินค้า foreach($value1 as $key2 => $value2){ echo "<td>{$value2}</td>"; } echo "</tr>"; } echo "</table>"; ?> <? $products=array( "T0001" => array("name" => "บล้อคหยอดหมีพูห์","price" => 599), "T0004" => array("name" => "ตุ๊กตากบสอน ABC","price" => 2400), "T0005" => array("name" => "โต๊ะกิจกรรม","price" => 1690), "P0001" => array("name" => "กระดานลื่นสุขสันต์","price" => 9800), "B0001" => array("name" => "หนังสือมีเสียง: Pooh's Musical Party","price" => 550) ); echo '<table border="1" width="100%">'; echo "<tr><th>รหัสสินค้า</th><th>ชื่อสินค้า</th><th>ราคา</th></tr>"; foreach($products as $key=>$value1) { //ตัวแปร $value จะเป็นอาร์เรย์

  21. การวนลูปเพื่อเข้าถึงสมาชิกทั้งหมดของอาร์เรย์หลายมิติการวนลูปเพื่อเข้าถึงสมาชิกทั้งหมดของอาร์เรย์หลายมิติ ตัวอย่างต่อไปนี้จะใช้ลูป for 2 ชั้น อ่านข้อมูลใน Numeric Array 2 มิติออกมาแสดงผล <? $test = array(array(1,2,3,4),array(5,6,7,8), array(9,10,11,12)); for($i=0;$i<3;$i++){ echo "<b>แถวที่ " . ($i+1).":</b>"; for($j=0;$j<4;$j++){ echo $test[$i][$j]; if ($j<3) echo ". "; } echo "<br>"; } ?>

  22. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ • ฟังก์ชั่นarray_push เพิ่มข้อมูลใหม่เข้าไปตอนปลายของอาร์เรย์ (เพิ่มข้อมูลต่อท้ายอาร์เรย์) ตัวอย่างนี้จะเพิ่มค่าสตริง “แก้วมังกร” และ “มะเฟือง” เข้าไปในอาร์เรย์ $fruits ซึ่งจะทำให้อาร์เรย์ $fruits มีสมาชิกเพิ่มขึ้นมาอีก 2 ตัว array_push(อาร์เรย์,ข้อมูลที่จะเพิ่มสู่อาร์เรย์) array_push($fruits,”แก้วมังกร”,”มะเฟือง”);

  23. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ • ฟังก์ชั่น array_pop ลบสมาชิกตัวสุดท้ายของอาร์เรย์ แล้วให้ค่าเป็นข้อมูลของสมาชิกตัวนั้น ตัวอย่างนี้จะลบสมาชิกตัวสุดท้ายของอาร์เรย์ $fruits ทิ้งไป แล้วอ่านข้อมูลของสมาชิกตัวนั้นมาเก็บไว้ในตัวแปร $last_element array_pop(อาร์เรย์) $last_element = array_pop($fruits);

  24. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ • ฟังก์ชั่น array_unshift เพิ่มข้อมูลใหม่เข้าไปตอนต้นของอาร์เรย์ • ฟังก์ชั่น array_shift ลบสมาชิกตัวแรกของอาร์เรย์ แล้วส่งคืนค่าของสมาชิกตัวนั้นกลับมา Array_unshift(อาร์เรย์,ข้อมูลที่จะเพิ่มเข้าสู่อาร์เรย์) Array_shift(อาร์เรย์)

  25. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ • ฟังก์ชั่น array_merge รับอาร์เรย์ 2 ชุดเข้ามาเป็นอาร์กิวเมนต์ แล้วให้ค่าเป็นอาร์เรย์ใหม่ที่เกิดจากการรวมอาร์เรย์ทั้งสองนั้นเข้าด้วยกัน เช่น Array_merge(อาร์เรย์,อาร์เรย์) $combined_array=Array_merge($fruits,$vegetables);

  26. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ • ฟังก์ชั่น array_keys ให้ค่าเป็น Numeric Array ที่มีข้อมูลเป็นคีย์ของอาร์เรย์ที่กำหนด • ฟังก์ชั่น array_values ให้ค่าเป็น Numeric Array ที่มีข้อมูลเป็นข้อมูลของอาร์เรย์ที่กำหนด Array_keys(อาร์เรย์) Array_values(อาร์เรย์)

  27. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ <? $fruits=array('app'=>'แอปเปิ้ล ', 3=>'ส้ม' , 12=>'สับปะรด' ,'mgo'=>'มะม่วง'); //ดึงคีย์ของอาร์เรย์ $fruits มาสร้างเป็นอาร์เรย์ $keys $keys = array_keys($fruits); //ดึงข้อมของอาร์เรย์ $fruits มาสรางเป็นอาร์เรย์ $values $values = array_values($fruits); echo '<table border="0" width="100%">'; echo '<tr><td>$fruits<hr></td><td>$keys<hr></td><td>$values<hr></td></tr>'; echo "<tr><td><pre>"; print_r($fruits); echo "</pre></td>"; echo "<td><pre>"; print_r($keys); echo "</pre></td>"; echo "<td><pre>"; print_r($values); echo "</pre></td></tr>"; echo "</table>" ?>

  28. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ • ฟังก์ชั่น sort และ rsort ใช้เรียงลำดับข้อมูลในอาร์เรย์จากน้อยไปมาก และจากมากไปน้อย ตามลำดับ ฟังก์ชั่นทั้งสองจะกำหนดคีย์ใหม่ เป็นค่าจำนวนเต็ม ตั้งแต่ 0 ให้กับอาร์เรย์ โดยไม่สนใจคีย์เดิม หมายเหตุ ฟังก์ชั่นต่างๆเกี่ยวกับการเรียงลำดับอาร์เรย์ จะรับอาร์เรย์เข้ามาเป็นอาร์กิวเมนต์แล้วจัดเรียงข้อมูลในอาร์เรย์นั้นโดยตรง เนื่องจากอาร์เรย์ถูกส่งผ่านโดยการอ้างอิง (pass-by-reference) ส่วนค่าที่ฟังก์ชั่นส่งคืนออกไปจะบอกให้รู้ว่าการทำงานของมันสำเร็จหรือล้มเหลว (คืนค่า TRUE ถ้าสำเร็จ และคืนค่า FALSE ถ้าล้มเหลว)

  29. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ <? $fruits=array('app'=>'แอปเปิ้ล ', 3=>'ส้ม' , 12=>'สับปะรด' ,'mgo'=>'มะม่วง'); sort($fruits);//เรียงลำดับข้อมูลในอาร์เรย์ $fruits echo "<pre>"; print_r($fruits);//แสดงคีย์และข้อมูลในอาร์เรย์ $fruits ออกมา echo "</pre>"; ?>

  30. ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ฟังก์ชั่นที่ใช้ทำงานกับอาร์เรย์ • ฟังก์ชั่น asortและ arsort ใช้เรียงลำดับข้อมูลในอาร์เรย์จากน้อยไปมาก และจากมากไปน้อย ตามลำดับ โดยรักษาคีย์เดิมของข้อมูลไว้ • ฟังก์ชั่น ksortkrsort ใช้เรียงลำดับข้อมูลในอาร์เรย์ตามค่าของคีย์จากน้อยไปมาก และจากมากไปน้อย ตามลำดับ

  31. สรุป • อาร์เรย์ (Array) คือกลุ่มของค่าหรือข้อมูลที่เกี่ยวข้องกันซึ่งถูกจัดเก็บไว้ภายใต้ชื่อตัวแปรหนึ่งๆ ดังนั้นตัวแปรอาร์เรย์จึงเป็นตัวแปรที่สามารถเก็บค่าไว้ได้มากกว่า 1 ค่า พร้อมกัน • อาร์เรย์ในภาษา PHP แบ่งออกเป็น 2 รูปแบบ คือ Numerically Indexed Array (หรือเรียกง่ายๆว่า Numeric Array) กับ Associative Array โดย Numeric Array หมายถึง อาร์เรย์ที่มีคีย์เป็นค่าจำนวนเต็ม ซึ่ง PHP จะกำหนดคีย์ให้กับแต่ละสมาชิกโดยอัตโนมัติเริ่มจากศูนย์ ส่วน Associative Array หมายถึงอาร์เรย์ที่มีคีย์เป็นค่าชนิดใดก็ได้ (มักเป็นค่าสตริง) โดยที่กำหนดความสัมพันธ์ระหว่างคีย์กับข้อมูลเอง • การสร้างอาร์เรย์ทำได้ 2 วิธี คือ การใช้คำสั่ง array และการทยอยกำหนดค่าให้แก่ตัวแปรอาร์เรย์ในช่วงเขียนโปรแกรม • คำสั่ง foreachช่วยให้การเข้าถึงสมาชิกทั้งหมดของอาร์เรย์มีความสะดวกมากขึ้น โดยแต่ละรอบที่วนลูปจะเป็นการเข้าถึงสมาชิกหนึ่งๆ ของอาร์เรย์ • อาร์เรย์หลายมิติ (Multi-Dimensional Array) คือ อาร์เรย์ที่มีสมาชิกเป็นอาร์เรย์

  32. Thank You

More Related