หน่วยประมวลผลกลาง (Central Processing Unit: CPU)
|
1 ความหมาย |
| 1.1 ซีพียู (CPU) คือ อุปกรณ์ตัวหนึ่งที่มีความสำคัญและจำเป็นในการทำงานของคอมพิวเตอร์ซึ่งอาจจะเรียกว่าเป็นหัวใจของคอมพิวเตอร์เลยก็ได้ ซีพียู เป็นตัวควบคุมการทำงานของอุปกรณ์ต่างๆ ไม่ว่าจะเป็นอุปกรณ์ที่อยู่ในคอมพิวเตอร์ หรืออุปกรณ์ต่อพ่วงที่ต่อร่วมกับ |
|
2 หน้าที่ |
| 2.1 CPU ทำหน้าที่ เป็นหัวใจหลักในการประมวลของคอมพิวเตอร์ โดยพื้นฐานแล้วซีพียูทำหน้าที่ประมวลผลข้อมูลเชิงคณิตศาสตร์และข้อมูลเชิงตรรกะเท่านั้น แต่ทำไมการคำนวณขนาดนี้ ต้องมีการพัฒนาซีพียูกันไม่หยุดหย่อน ย้อนกลับไปปี 1946 คอมพิวเตอร์ยุคแรกที่มีชื่อที่พอจะจำได้ก็คือ ENIVAC นั้นทำงานโดยใช้หลอดไดโอด ซึ่งสถานะการทำงานของหลอดพวกนี้ มีสองอย่าง คือ 1 กับ 0 จะมีค่าเป็น 1 เมื่อมีกระแสไหลผ่านและเป็น 0 เมื่อไม่มีกระแสไหลผ่าน |
| 3 กลไกการทำงานของซีพียู |
| 3.1 กลไกการทำงานของซีพียู การทำงานของคอมพิวเตอร์ ใช้หลักการเก็บคำสั่งไว้ที่หน่วยความจำ ซีพียูอ่านคำสั่งจากหน่วยความจำมาแปลความหมายและกระทำตามเรียงกันไปทีละคำสั่ง หน้าที่หลักของซีพียู คือ ควบคุมการทำงานของคอมพิวเตอร์ทั้งระบบตลอดจนทำการประมวลผล กลไกการทำงานของซีพียู มีความสลับซับซ้อน ผู้พัฒนาซีพียูได้สร้างกลไกให้ทำงานได้ดีขึ้น โดยแบ่งการทำงานเป็นส่วน ๆ มีการทำงานแบบขนาน และทำงานเหลื่อมกันเพื่อให้ทำงานได้เร็วขึ้น |
| 4 ปัจจัยที่มีผลต่อความเร็วของซีพียู |
| 4.1 ปัจจัยที่มีผลต่อความเร็วของซีพียู ความสามารถในการประมวลผล (Processing Power) คือประสิทธิภาพและความเร็วในการทำงานของซีพียู ซึ่งขึ้นอยู่กับชนิดหรือรุ่นของซีพียู เครื่องคอมพิวเตอร์ส่วนบุคคล (Personal Computer) โดยทั่วไปจะใช้ซีพียูในตระกูลของอินเทล เช่น Pentium I Pentium II Pentium III ส่วนเครื่องคอมพิวเตอร์อื่นจะใช้ซีพียูที่ต่างกันออกไปคอมพิวเตอร์ทำงานด้วยความเร็วที่แตกต่างกันซึ่งขึ้นอยู่กับปัจจัยต่างๆ ดังนี้ • รีจิสเตอร์ • หน่วยความจำภายนอก • สัญญาณนาฬิกา • บัส • หน่วยความจำแคช • Passing Math Operation |
| 4.1.1 ปัจจัยที่มีผลต่อความเร็วของซีพียู ความสามารถในการประมวลผล (Processing Power) คือประสิทธิภาพและความเร็วในการทำงานของซีพียู |
| 4.1.2 ซึ่งขึ้นอยู่กับชนิดหรือรุ่นของซีพียู เครื่องคอมพิวเตอร์ส่วนบุคคล (Personal Computer) โดยทั่วไปจะใช้ซีพียูในตระกูลของอินเทล เช่น Pentium I Pentium II Pentium III |
| 4.1.3 ส่วนเครื่องคอมพิวเตอร์อื่นจะใช้ซีพียูที่ต่างกันออกไปคอมพิวเตอร์ทำงานด้วยความเร็วที่แตกต่างกันซึ่งขึ้นอยู่กับปัจจัยต่างๆ ดังนี้ |
| 4.1.4 • Passing Math Operation |
| 4.1.5 • รีจิสเตอร์ |
| 4.1.6 • หน่วยความจำภายนอก |
| 4.1.7 • สัญญาณนาฬิกา |
| 4.1.8 • บัส |
| 4.1.9 • หน่วยความจำแคช |
| 5 หน่วยประมวลผลกลาง ประกอบด้วยส่วนประกอบสำคัญ 3 ส่วน |
| 5.1 1. หน่วยคำนวณและตรรกะ (Arithmetic & Logical Unit: ALU) |
| 5.1.1 Chinese Teacher |
| 5.2 2. หน่วยควบคุม (Control Unit) |
| 5.2.1 Very Important Person |
| 5.2.1.1 She likes tulip |
| 5.3 3. หน่วยความจำหลัก (Main) |
| 5.3.1 Golf |
| 6 ประโยชน์ของ CPU |
| 6.1 มีหน้าที่ ประมวลผลคำสั่งต่าง ๆ ที่รับมาจากอุปกรณ์เช่น เมาส์และคีย์บอร์ด เมื่อประมวลผลแล้ว จะส่งผลไปให้กับอุปกรณ์ Output เช่นจอภาพ ผ่านทางการ์ดแสดงผล เสียงผ่านการ์ดเสียงพิมพ์งานด้วยเครื่องพิมพ์ ผ่านพอร์ต Parallal ซีพียูที่นิยมใช้กันในปัจจุบันเป็นของ 2 คู่แข่งคือค่าย Intel และค่าย AMD |
วันพุธที่ 17 ธันวาคม พ.ศ. 2557
หน่วยประมวลผลกลาง
เทคโนโลยีสารสนเทศ
เทคโนโลยีสารสนเทศ [Information Technology]
Information Technology หรือ IT คือ การประยุกต์ความรู้ทางวิทยาศาสตร์มาใช้ในระบบสารสนเทศ ตั้งแต่กระบวนการจัดเก็บ ประมวลผล และการเผยแพร่สารสนเทศ เพื่อช่วยให้ได้สารสนเทศที่มีประสิทธิภาพและรวดเร็วทันต่อเหตุการณ์ โดยเทคโนโลยีสารสนเทศ อาจประกอบด้วย
1. เครื่องมือและอุปกรณ์ต่างๆ เช่น เครื่องคอมพิวเตอร์ เครื่องใช้สำนักงาน อุปกรณ์สื่อสารโทรคมนาคมต่างๆ รวมทั้งซอฟท์แวร์ทั้งแบบสำเร็จรูปและแบบพัฒนาขึ้นเพื่อใช้ในงานเฉพาะด้าน ซึ่งเครื่องมือเหล่านี้จัดเป็นเครื่องมือทันสมัย และใช้เทคโนโลยีระดับสูง (High Technology)
2. กระบวนการในการนำอุปกรณ์เครื่องมือต่างๆ ข้างต้นมาใช้งาน เพื่อรวบรวม จัดเก็บ ประมวลผล และแสดงผลลัพธ์เป็นสารสนเทศในรูปแบบต่างๆ ที่สามารถนำไปใช้ประโยชน์ได้ต่อไป เช่น การจัดเก็บข้อมูลในลักษณะของฐานข้อมูล เป็นต้น
1. เครื่องมือและอุปกรณ์ต่างๆ เช่น เครื่องคอมพิวเตอร์ เครื่องใช้สำนักงาน อุปกรณ์สื่อสารโทรคมนาคมต่างๆ รวมทั้งซอฟท์แวร์ทั้งแบบสำเร็จรูปและแบบพัฒนาขึ้นเพื่อใช้ในงานเฉพาะด้าน ซึ่งเครื่องมือเหล่านี้จัดเป็นเครื่องมือทันสมัย และใช้เทคโนโลยีระดับสูง (High Technology)
2. กระบวนการในการนำอุปกรณ์เครื่องมือต่างๆ ข้างต้นมาใช้งาน เพื่อรวบรวม จัดเก็บ ประมวลผล และแสดงผลลัพธ์เป็นสารสนเทศในรูปแบบต่างๆ ที่สามารถนำไปใช้ประโยชน์ได้ต่อไป เช่น การจัดเก็บข้อมูลในลักษณะของฐานข้อมูล เป็นต้น
ความสำคัญของเทคโนโลยีสารสนเทศ
สามารถอธิบายความสำคัญของเทคโนโลยีสารสนเทศในด้านที่มีผลกระทบต่อการเปลี่ยนแปลงพฤติกรรมด้านต่าง ๆ ของผู้คนไว้หลายประการดังต่อไปนี้
ประการที่หนึ่ง เทคโนโลยีสารสนเทศ ทำให้สังคมเปลี่ยนจากสังคมอุตสาหกรรมมาเป็นสังคมสารสนเทศ
ประการที่สอง เทคโนโลยีสารสนเทศทำให้ระบบเศรษฐกิจเปลี่ยนจากระบบแห่งชาติไปเป็นเศรษฐกิจโลก ที่ทำให้ระบบเศรษฐกิจของโลกผูกพันกับทุกประเทศ ความเชื่อมโยงของเครือข่ายสารสนเทศทำให้เกิดสังคมโลกาภิวัฒน์
ประการที่สาม เทคโนโลยีสารสนเทศทำให้องค์กรมีลักษณะผูกพัน มีการบังคับบัญชาแบบแนวราบมากขึ้น หน่วยธุรกิจมีขนาดเล็กลง และเชื่อมโยงกันกับหน่วยธุรกิจอื่นเป็นเครือข่าย การดำเนินธุรกิจมีการแข่งขันกันในด้านความเร็ว โดยอาศัยการใช้ระบบเครือข่ายคอมพิวเตอร์ และการสื่อสารโทรคมนาคมเป็นตัวสนับสนุน เพื่อให้เกิดการแลกเปลี่ยนข้อมูลได้ง่ายและรวดเร็ว
ประการที่สี่ เทคโนโลยีสารสนเทศเป็นเทคโนโลยีแบบสุนทรียสัมผัส และสามารถตอบสนองตามความต้องการการใช้เทคโนโลยีในรูปแบบใหม่ที่เลือกได้เอง
ประการที่ห้า เทคโนโลยีสารสนเทศทำให้เกิดสภาพทางการทำงานแบบทุกสถานที่และทุกเวลา
ประการที่หก เทคโนโลยีสารสนเทศก่อให้เกิดการวางแผนการดำเนินการระยะยาวขึ้น อีกทั้งยังทำให้วิถีการตัดสินใจ หรือเลือกทางเลือกได้ละเอียดขึ้น
กล่าวโดยสรุปแล้ว เทคโนโลยีสารสนเทศมีบทบาทที่สำคัญในทุกวงการ มีผลต่อการเปลี่ยนแปลงโลกด้านความเป็นอยู่ สังคม เศรษฐกิจ การศึกษา การแพทย์ เกษตรกรรม อุตสาหกรรม การเมือง ตลอดจนการวิจัยและการพัฒนาต่าง ๆ
ข้อสอบ O-NET
ข้อสอบ O-NET
1. ซอฟต์แวร์ คือ
ก. โปรแกรมชุดของคำสั่งที่ควบคุมการทำงานของคอมพิวเตอร์
ข. อุปกรณ์เทคโนโลยีระดับสูง
ค. โปรแกรมแก้ปัญหาทุกอย่างของมนุษย์
ง. อุปกรณ์ที่ทำหน้าเสมือนสมองกล
ข. อุปกรณ์เทคโนโลยีระดับสูง
ค. โปรแกรมแก้ปัญหาทุกอย่างของมนุษย์
ง. อุปกรณ์ที่ทำหน้าเสมือนสมองกล
2. ข้อใดไม่ใช่ระบบปฏิบัติการ
ก. ระบบปฏิบัติการดอส
ข. ระบบปฏิบัติการไมโครซอฟท์เวิร์ด
ค. ระบบปฏิบัติการไมโครซอฟต์วินโดวส์
ง. ระบบปฏิบัติการ แอนดรอยด์
ข. ระบบปฏิบัติการไมโครซอฟท์เวิร์ด
ค. ระบบปฏิบัติการไมโครซอฟต์วินโดวส์
ง. ระบบปฏิบัติการ แอนดรอยด์
3. ชนิดของซอฟต์แวร์ (software) มีทั้งหมดกี่ชนิด
ก. มี 1 ชนิด 1.ซอฟต์แวร์ระบบ
ข. มี 2 ชนิด 1.ซอฟต์แวร์ระบบ 2.ซอฟต์แวร์ประยุกต์
ค. มี 3 ชนิด 1.ซอฟต์แวร์ระบบ 2.ซอฟต์แวร์ ประยุกต์ 3.ซอฟต์แวร์บุคคล
ง. มี 4 ชนิด 1.ซอฟต์แวร์ระบบ 2.ซอฟต์แวร์ประยุกต์ 3.ซอฟต์แวร์บุคคล 4. ซอฟต์แวร์ บริหาร
ก. มี 1 ชนิด 1.ซอฟต์แวร์ระบบ
ข. มี 2 ชนิด 1.ซอฟต์แวร์ระบบ 2.ซอฟต์แวร์ประยุกต์
ค. มี 3 ชนิด 1.ซอฟต์แวร์ระบบ 2.ซอฟต์แวร์ ประยุกต์ 3.ซอฟต์แวร์บุคคล
ง. มี 4 ชนิด 1.ซอฟต์แวร์ระบบ 2.ซอฟต์แวร์ประยุกต์ 3.ซอฟต์แวร์บุคคล 4. ซอฟต์แวร์ บริหาร
4. ซอฟต์แวร์ประมวลคำ คือข้อใด
ก. word processing software
ข. spreadsheet software
ค. database management software
ง. presentation software
ข. spreadsheet software
ค. database management software
ง. presentation software
5. ซอฟต์แวร์ตารางทำงาน
ก. word processing software
ข. spreadsheet software
ค. database management software
ง. presentation software
ข. spreadsheet software
ค. database management software
ง. presentation software
6. ซอฟต์แวร์จัดการฐานข้อมูล
ก. word processing software
ข. spreadsheet software
ค. database management software
ง. presentation software
ข. spreadsheet software
ค. database management software
ง. presentation software
7. ซอฟต์แวร์นำเสนอ
ก. word processing software
ข. spreadsheet software
ค. database management software
ง. presentation software
ข. spreadsheet software
ค. database management software
ง. presentation software
8. ซอฟต์แวร์สื่อสาร
ก. word processing software
ข. spreadsheet software
ค. database management software
ง. communication software
ข. spreadsheet software
ค. database management software
ง. communication software
9. ซอฟต์แวร์นำเสนอ คือข้อใด
ก. Microsoft Excel
ข. Microsoft Access
ค. Microsoft Outlook
ง. Microsoft PowerPoint
ข. Microsoft Access
ค. Microsoft Outlook
ง. Microsoft PowerPoint
10. โปรแกรมวินโดวส์ เป็นซอฟต์แวร์ประเภทใด
ก. ซอฟต์แวร์ระบบ
ข. ซอฟต์แวร์ประยุกต์
ค. ซอฟต์แวร์สำเร็จ
ง. ซอฟต์แวร์ที่พัฒนาขึ้นใช้งานเฉพาะ
ข. ซอฟต์แวร์ประยุกต์
ค. ซอฟต์แวร์สำเร็จ
ง. ซอฟต์แวร์ที่พัฒนาขึ้นใช้งานเฉพาะ
เฉลย
1. ก. โปรแกรมชุดของคำสั่งที่ควบคุมการทำงานของคอมพิวเตอร์
2. ข. ระบบปฏิบัติการไมโครซอฟท์เวิร์ด
3. ข. มี 2 ชนิด 1.ซอฟต์แวร์ระบบ 2.ซอฟต์แวร์ประยุกต์
4. ก. word processing software
5. ข. spreadsheet software
6. ค. database management software
7. ง. presentation software
8. ง. communication software
9. ง. Microsoft PowerPoint
10. ก. ซอฟต์แวร์ระบบ
2. ข. ระบบปฏิบัติการไมโครซอฟท์เวิร์ด
3. ข. มี 2 ชนิด 1.ซอฟต์แวร์ระบบ 2.ซอฟต์แวร์ประยุกต์
4. ก. word processing software
5. ข. spreadsheet software
6. ค. database management software
7. ง. presentation software
8. ง. communication software
9. ง. Microsoft PowerPoint
10. ก. ซอฟต์แวร์ระบบ
คำสั่ง SQL เบื้องต้น
ก่อนอื่นต้องบอกเลยครับว่ามันไม่ได้ดีมากนักสำหรับหน้าเวปนี้เพราะผมอ่านหนังสือและสรุปอย่างคร่าวๆ แล้วรูปแบบมันอาจจะเพี้ยนๆ เพราะผมเขียนใน PAGE แล้วเอา COPY and PASTE ลงเล้ย แบบไม่แก้ไขอันใด tab มั่วไปหมด ถ้าผิดพลาดประการใดต้องขออภัยด้วยครับ
ภาษา SQL นั้นไม่เป็น case sensitive (ตัวเล็ก ตัวใหญ่มีค่าเท่ากัน) และในแต่ละคำสั่งจะถูกปิดด้วย ; (semi-colon)
ถ้าต้องการออกใช้
สร้าง DATABASE
ภาษา SQL นั้นไม่เป็น case sensitive (ตัวเล็ก ตัวใหญ่มีค่าเท่ากัน) และในแต่ละคำสั่งจะถูกปิดด้วย ; (semi-colon)
(วิธีการลง SQL ใน Window7 : http://natsusencho.blogspot.com/2012/07/mysql-window7.html)
มาเริ่มกันเลย
การเข้าใช้ให้เราเปิด cmd ขึ้นมาและ
$ mysql -u root -p
จากนั้นใส่ password ลงไป
จะเข้าสู่การใช้
mysql > (เราจะพิมพ์คำสั่งต่างๆลงไป)
mysql > (เราจะพิมพ์คำสั่งต่างๆลงไป)
ถ้าต้องการออกใช้
mysql > quit
mysql > show databases; แสดง databases ทั้งหมดที่เราสร้างขึ้น
mysql > use <ชื่อ database> เป็นการเข้าใช้ database นั้นๆ
mysql > SELECT database(); ดู database ที่เรากำลังใช้อยู่
mysql > show tables; แสดงตารางทั้งหมดที่เราสร้างขึ้นใน database ที่ use
สร้าง DATABASE
mysql > create database <ชื่อdatabase>;
เช่น create database world;
สร้าง table
mysql > create table <ชื่อtable> (<ชื่อข้อมูล> <ชนิดข้อมูล>, ... );
เช่น create table human (name VARCHAR(20), birth DATE, sex CHAR(1));
ชนิดข้อมูล เช่น
VARCHAR(n) - ข้อมูลชนิด string เก็บแบบ linked list เหมาะสมกับข้อมูลที่มีความยาวที่ไม่แน่นอน
CHAR(n) - ข้อมูลชนิด string เก็บแบบ array เหมาะสมกับข้อมูลที่มีความยาวที่แน่นอน
INT - จำนวนเต็ม
DATE - ข้อมูลชนิดพิเศษของ SQL ใช้เก็บวันที่ มีรูปแบบเป็น YYYY-MM-DD
ดูชื่อและชนิดข้อมูลของแต่ละตาราง
mysql > describe <ชื่อtable>;
การใส่ข้อมูลลงไปใน table
1. ใช้คำสั่ง load data จากไฟล์ที่เราเตรียมไว้ โดย default จะแบ่งเนื้อหาโดยใช้ tab แบบนี้จะมีปัญหาเรื่องการใช้ข้อมูลชนิด NULL ซึ่งใช้ \N แทน
mysql > load data local infile ‘natsu.txt’ into table pet;
2.INSERT ใส่ทีละข้อมูล เหมาะกับข้อมูลที่น้อยๆ ที่เราเพิ่มเติมเข้าไป เช่น
2.INSERT ใส่ทีละข้อมูล เหมาะกับข้อมูลที่น้อยๆ ที่เราเพิ่มเติมเข้าไป เช่น
mysql > INSERT INTO pet VALUES (‘natsusencho’, ‘1992-03-25’, ‘M’);
3. *ทำ SQL script คือเตรียมไฟล์คำสั่ง sql ไว้แล้วนำมาทำการ source ทีเดวเช่น
ส่วนตัวแนะนำวิธีนี้เพราะเราเขียนทั้งหมดทีเดียวไม่ต้องมาใส่ทีละคำสั่ง นึกออกให้เสร็จที่เดียวแล้ว run ทีเดียวทั้งหมด
3. *ทำ SQL script คือเตรียมไฟล์คำสั่ง sql ไว้แล้วนำมาทำการ source ทีเดวเช่น
ส่วนตัวแนะนำวิธีนี้เพราะเราเขียนทั้งหมดทีเดียวไม่ต้องมาใส่ทีละคำสั่ง นึกออกให้เสร็จที่เดียวแล้ว run ทีเดียวทั้งหมด
---- file natsu.sql ----
CREATE TABLE IF NOT EXISTS human (
name VARCHAR(20),
birth DATE,
sex CHAR(1) );
INSERT INTO human VALUES
( 'NatsuSencho', '1992-03-25', 'M'),
( 'Slime', '1999-03-03', NULL ),
( ‘HeyFemale’ , ‘1993-12-25’ , ‘F’);
----- file natsu.sql -----
หลังจากสร้างเสร็จแล้วก้ลองใช้คำสั่ง
mysql > source natsu.sql;
ก็จะได้ตาราง world หน้าที่มีข้อมูล 3 ตัว
create table IF NOT EXISTS human
คำว่า IF NOT EXISTS หมายถึงการสร้าง table นี้ถ้ายังไม่มี table นี้ ถ้ามีแล้วก็ไม่ต้องสร้าง
มีสร้างก็ต้องมีลบ การลบ table ใช้คำสั่ง
mysql > DELETE FROM <ชื่อtable>;
หลังจากที่สร้างเป็นแล้วต้องสามารถแก้ไขข้อมูลได้
mysql > UPDATE <ชื่อtable>
SET <ชื่อข้อมูล> = <ข้อมูลใหม่>
WHERE <เงื่อนไขอื่นๆ>;
เช่น UPDATE human SET name = ‘HeyGirl’ WHERE name = ‘HeyFemale’;
การสืบค้นข้อมูล หรือการดูข้อมูล
SELECT <สิ่งที่ต้องการ>
FROM <ชื่อtable>
WHERE <เงื่อนไขอื่นๆ>
เช่นต้องการชื่อของข้อมูลในตาราง human ที่มีมีเพศชาย
SELECT name
FROM human
WHERE sex = ‘M’;
ต้องการดูข้อมูลทั้งหมดในตาราง human [* คือทั้งหมด]
SELECT *
FROM human;
ซึ่งการกำหนดเงื่อนไขนั้นเราสามารถใช้ตัวแปรทางคณิตศาสตร์ตรรกะ มาช่วยได้เช่น
AND และ
OR หรือ
OR หรือ
< น้อยกว่า
> มากกว่า
> มากกว่า
<= น้อยกว่าหรือเท่ากับ
>= มากกว่าหรือเท่ากับ
<> ไม่เท่ากับ
UNION การนำ 2 ตารางมาเชื่อมต่อกันตัดตัวซ้ำ
UNION ALL การนำ 2 ตารางมาเชื่อมกันโดยไม่ตัดตัวซ้ำ
INTERSECT ข้อมูลที่ซ้ำกัน
DISTINCT คือการตัดตัวที่ซ้ำกันออก
เช่น SELECT DISTINCT sex
FROM human;
ORDER BY เรียงลำดับข้อมูล การจัดกลุ่มข้อมูล
เรียงลำดับจากมากไปน้อย (descending order)
เช่น SELECT *
FROM human
ORDER BY name;
เรียงลำดับจากน้อยไปมาก (descending order)
เช่น SELECT *
FROM human
ORDER BY name DESC;
ถ้าต้องการมากกว่าอันนึงก็ย่อมได้
เช่น SELECT *
FROM human
ORDER BY name , sex DESC ;
แบบนี้จะจัดตามชื่อแบบ ascending ก่อนแล้วจะมาจัดเพศแบบ descending ทีหลัง
การคำนวณเกี่ยวกับวันที่
ตัวแปร DATE เป็น string ที่มีการเก็บเป็นรูปแบบ YYYY-MM-DD ตัวแปรชนิด DATE สามารถนำมาเทียบค่ากันได้ในระดับ ASCII
CURDATE() จะเป็น function ที่ส่งค่าออกมาเป็นข้อมูลรูปแบบ DATE (YYYY-MM-DD)
YEAR(<ข้อมูลชนิดdate>) ส่งค่าออกมาเป็นข้อมูลรูปแบบของปี (YYYY)
MONTH(<ข้อมูลชนิดdate>) ส่งค่าออกมาเป็นข้อมูลรูปแบบของเดือน (MM)
DAY(<ข้อมูลชนิดdate>) ส่งค่าออกมาเป็นข้อมูลรูปแบบของวัน (DD)
RIGHT(<ข้อมูลชนิดstring>, <จำนวนตัวเลข>) ส่งค่าออกมาจำนวนเท่ากับที่เราต้องการตัดออกมาจาก string นั้นๆ โดยเริ่มนับจากทางขวา
LEFT(<ข้อมูลชนิดstring>, <จำนวนตัวเลข>) ส่งค่าออกมาจำนวนเท่ากับที่เราต้องการตัดออกมาจาก string นั้นๆ โดยเริ่มนับจากทางซ้าย
ตัวอย่าง
ex1. ต้องการปีของวันปัจจุบัน YEAR( CURDATE() )
ex2. ต้องการเดือนและวันของปัจจุบัน RIGHT( CURDATE(),5 )
[5 ในที่นี้คือนับจากทางขวามือมา YYYY-MM-DD ก็จะได้ MM-DD มา]
การใช้ตัวแปร NULL ในเงื่อนไข
ใช้คำสั่ง xxx IS NOT NULL เช่นต้องการดูสิ่งมีชีิวิตที่ไม่มีเพศ
SELECT *
FROM human
WHERE sex IS NOT NULL;
การตั้งชื่อเป็นชื่อที่เราต้องการ
หมายถึงเวลา select บางทีคนทั่วไปอาจจะไม่เข้าใจว่าคืออะไร เราจึงมีคำสั่ง AS ช่วย เช่น
SELECT name AS ‘NAME-SURNAME’
FROM human;
COUNT การนับจำนวน + GROUP BY การจัดกลุ่ม
COUNT ใช้ในการนับจำนวนของตารางต่างๆ จะใช้คู่กับ GROUP BY ได้ดีเพราะจะช่วยในการจัดกลุ่มชุดข้อมูลได้ดีขึ้น
SELECT <อื่นๆ> COUNT(*)
FROM <ชื่อtable>
WHERE <เงื่อนไข>
GROUP BY <จัดกลุ่มโดยใช้อะไร>
เช่นต้องการนับจำนวนคนในแต่ละเพศ
SELECT sex , COUNT(*)
FROM human
GROUP BY sex;
SET การกำหนดตัวแปร
SET @<ชื่อตัวแปร> = <ค่า>
เช่น SET @A1 = ‘Natsu Sencho’;
SET @A2 = ‘1999-09-09’;
การใช้คำสั่ง JOIN
การ JOIN คือการนำตารางที่มีความสัมพันธ์ของข้อมูลในแต่ละฟิลมาเชื่อมโยงกัน
การ JOIN มี 2 แบบคือ
1. INNER JOIN
2. OUTER JOIN |--- LEFT JOIN
|--- RIGHT JOIN
INNER JOIN
คือการ JOIN โดยไม่สนใจค่า NULL จะดูเพียงตัวที่เหมือนกันเท่านั้น
สมมติมีตาราง 2 อันชื่อ Ltable และ Rtable นำมา JOIN กันโดยมีข้อมูลที่ซ้ำกันคือ id
-- JOIN โดยใช้ ON
SELECT *
FROM Ltable INNER JOIN Rtable ON Ltable.id = Rtable.id;
-- หรือ JOIN โดยใช้ USING
SELECT *
FROM Ltable INNER JOIN Rtable USING (id);
กรณีพิเศษที่ตัวแปรหรือชื่อ Column ซ้ำกันก็สามาใช้ NATURAL JOIN ได้ อย่างในที่นี้เรารุ้ว่า id นั้นซ้ำกันเราก็ไม่ต้องใส่เงื่อนไขใดๆ แต่ใช้ Natural Join เข้ามาช่วยโดย
SELECT *
FROM Ltable NATURAL JOIN Rtable;
OUTER JOIN
- LEFT JOIN
คือการ JOIN โดยใช้ตัวทางซ้ายเป็นหลักคือ จะแสดงตัวทางซ้ายทุกตัวและนำข้อมูลขวามาเชื่อม
SELECT *
FROM Ltable LEFT JOIN Rtable ON Ltable.id = Rtable.id;
- RIGHT JOIN
คือการ JOIN โดยใช้ตัวทางขวาเป็นหลักคือ จะแสดงตัวทางขวาทุกตัวและนำข้อมูลขวามาเชื่อม
SELECT *
FROM Ltable RIGHT JOIN Rtable ON Ltable.id = Rtable.id;
นอกจากวิธีการ JOIN ยังมีวิธีที่เรียกว่า Cartesian Product ซึ่งไม่ได้อทิบายไว้ในทีนี้
ถ้ามีโอกาศจะนั่งทำตัวอย่างให้ดูให้เห็นได้ชัดกว่านี้นะครับ แต่ผมสรุปแบบคร่าวๆ ให้พอดู
รวมคำศัพท์คำสั่งที่เจอเพจนี้
CREATE สร้างdatabase, table
INSERT ใส่ข้อมูล
UPDATE อัพเดตข้อมูล
SELECT ต้องการจะดูอะไรบ้าง
FROM จากที่ไหน
WHERE เงื่อนไขอย่างไร
COUNT(*) นับจำนวนของฟิลข้อมูล
GROUP BY จัดกลุ่มข้อมูล
ORDER BY เรียงลำดับข้อมูลโดย
JOIN เชื่อมตาราง
DISTINCT ตัดตัวซ้ำ
AS ใช้คำใหม่ให้กระทัดรัดขึ้น
SET กำหนดตัวแปร
CURDATE() วันที่ปัจจุบัน
YEAR() ปี
MONTH() เดือน
DAY() วัน
RIGHT() ตัดคำจากทางขวา
LEFT() ตัดคำจากทางซ้าย
* ทั้งหมด
ฟังก์ชันใน PHP
PHP เบื้องต้น > คำสั่งใช้ใหม่และฟังก์ชัน
ฟังก์ชันในโปรแกรมส่วนใหญ่ได้รับการเรียกคำสั่งเพื่อทำงานอย่างเดียว สิ่งนี้ทำให้คำสั่งอ่านได้ง่ายและยอมให้ใช้คำสั่งใหม่แต่ละครั้งเมื่อต้องการทำงานเดียวกัน
ฟังก์ชันเป็นโมดูลเก็บคำสั่งที่กำหนดการเรียกอินเตอร์เฟซ ทำงานเดียวกัน และตัวเลือกส่งออกค่าจากการเรียกฟังก์ชัน คำสั่งต่อไปเป็นการเรียกฟังก์ชันอย่างง่าย
my_function ();
คำสั่งเรียกฟังก์ชันชื่อ my_function ที่ไม่ต้องการพารามิเตอร์ และไม่สนใจค่าที่อาจจะส่งออกโดยฟังก์ชันนี้
ฟังก์ชันจำนวนมากได้รับการเรียกด้วยวิธีนี้ เช่น ฟังก์ชัน phpinfo () สำหรับแสดงเวอร์ชันติดตั้งของ PHP สารสนเทศเกี่ยวกับ PHP การตั้งค่าแม่ข่ายเว็บ ค่าต่างๆ ของ PHP และตัวแปร ฟังก์ชันนี้ไม่ใช้พารามิเตอร์และโดยทั่วไปไม่สนใจค่าส่งออก ดังนั้นการเรียก phpinfo () จะประกอบขึ้นดังนี้
phpinfo ();
การกำหนดฟังก์ชันและการเรียกฟังก์ชัน
การประกาศฟังก์ชันเริ่มต้นด้วยคีย์เวิร์ด function กำหนดชื่อฟังก์ชัน พารามิเตอร์ที่ต้องการ และเก็บคำสั่งที่จะประมวลผลแต่ละครั้งเมื่อเรียกฟังก์ชันนี้
<?php
function function_name(parameter1,…)
{
{
ชุดคำสั่ง …
}
?>
?>
ชุดคำสั่งต้องเริ่มต้นและสิ้นสุดในวงเล็บปีกกา ({ }) ตัวอย่างฟังก์ชัน my_function
<?php
function my_function()
{
function my_function()
{
$mystring =<<<BODYSTRING
my function ได้รับการเรียก
BODYSTRING;
echo $mystring;
echo $mystring;
}
?>
?>
การประกาศฟังก์ชันนี้ เริ่มต้นด้วย function ดังนั้นผู้อ่านและตัวกระจาย PHP ทราบว่าต่อไปเป็นฟังก์ชันกำหนดเอง ชื่อฟังก์ชันคือ my_function การเรียกฟังก์ชันนี้ใช้ประโยคคำสั่งนี้
my_function ();
my_function ();
การเรียกฟังก์ชันนี้จะให้ผลลัพธ์เป็นข้อความ "my function ได้รับการเรียก " บน browser
การตั้งชื่อฟังก์ชัน
สิ่งสำคัญมากในการพิจารณาเมื่อตั้งชื่อฟังก์ชันคือชื่อต้องสั้นแต่มีความหมาย ถ้าฟังก์ชันสร้างส่วนตัวของเพจควรตั้งชื่อเป็น pageheader () หรือ page_header ()
ข้อจำกัดในการตั้งชื่อคือ
- ฟังก์ชันไม่สามารถมีชื่อเดียวกับฟังก์ชันที่มีอยู่
- ชื่อฟังก์ชันสามารถมีได้เพียงตัวอักษรตัวเลข และ underscore
- ชื่อฟังก์ชันไม่สามารถเริ่มต้นด้วยตัวเลข
หลายภาษายอมให้ใช้ชื่อฟังก์ชันได้อีก ส่วนการทำงานนี้เรียกว่า function overload อย่างไรก็ตาม PHP ไม่สนับสนุน function overload ดังนั้นฟังก์ชันไม่สามารถมีชื่อเดียวกันกับฟังก์ชันภายใน หรือฟังก์ชันกำหนดเองที่มีอยู่
หมายเหตุ ถึงแม้ว่าทุกสคริปต์ PHP รู้จักฟังก์ชันภายในทั้งหมด ฟังก์ชันกำหนดเองอยู่เฉพาะในสคริปต์ที่ประกาศสิ่งนี้หมายความว่า ชื่อฟังก์ชันสามารถใช้ในคนละไฟล์แต่อาจจะไปสู่ความสับสน และควรหลีกเลียง
ชื่อฟังก์ชันต่อไปนี้ถูกต้อง
name ()
name2 ()
name_three ()
_namefour ()
name ()
name2 ()
name_three ()
_namefour ()
ชื่อไม่ถูกต้อง
5name ()
Name-six ()
fopen ()
5name ()
Name-six ()
fopen ()
การเรียกฟังก์ชันไม่มีผลจากชนิดตัวพิมพ์ ดังนั้นการเรียก function_name (), Function_Name() หรือ FUNCTION_NAME() สามารถทำได้และมีผลลัพธ์เหมือนกัน แต่แบบแผนการกำหนดชื่อฟังก์ชันใน PHP ให้ใช้ตัวพิมพ์เล็ก
ชื่อฟังก์ชันแตกต่างจากชื่อตัวแปร โดยชื่อตัวแปรเป็นชนิดตัวพิมพ์มีผล ดังนั้น $Name และ $name เป็น 2 ตัวแปร แต่ Name () และ name () เป็นฟังก์ชันเดียวกัน
การหยุดประมวลผลภายในฟังก์ชัน
คีย์เวิร์ด return หยุดการประมวลผลฟังก์ชัน ฟังก์ชันสิ้นสุดได้เพราะประโยคคำสั่งทั้งหมดได้รับการประมวลผล หรือ ใช้คีย์เวิร์ด return การประมวลผลกลับไปยังประโยคคำสั่งต่อจากการเรียกฟังก์ชัน
<?php
function division($x, $y)
{
{
if ($y == 0 || !isset($y))
{
echo " ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า" ;}
return;
$result = $x / $y;
echo $result;
}
?>
?>
ถ้าประโยคคำสั่ง return ได้รับการประมวลผล บรรทัดคำสั่งต่อไปในฟังก์ชันจะถูกข้ามไป และกลับไปยังผู้เรียกฟังก์ชันนี้ ในฟังก์ชันนี้ ถ้า y เป็น 0 จะหยุดการประมวลผล ถ้า y ไม่เท่ากับ 0 จะคำนวณผลหาร
สมมติป้อนค่าเป็น
x = 4, y = 0
x = 4
x = 4, y = 2
x = 4, y = 0
x = 4
x = 4, y = 2
ผลลัพธ์ของคำสั่ง คือ
x = 4, y = 0 ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = 2 ผลลัพธ์ 2
x = 4, y = 0 ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = ผลลัพธ์ ตัวหาร y ต้องไม่เป็นศูนย์หรือไม่มีค่า
x = 4, y = 2 ผลลัพธ์ 2
การเรียกฟังก์ชัน
เมื่อฟังก์ชันได้รับการประกาศหรือสร้างขึ้นแล้ว การเรียกฟังก์ชันสามารถเรียกมาจากที่ใดๆ ภายในสคริปต์ หรือ จากไฟล์ที่มีการรวมด้วยประโยคคำสั่ง include() หรือ require()
ตัวอย่าง ฟังก์ชัน show_message() เก็บอยู่ในไฟล์ fn_ 03 _keeper.php ส่วนผู้เรียกอยู่ในสคริปต์ fn_ 03 _caller.php
<?php
include("fn_ 03 _keeper.php");
show_message();
?>
พารามิเตอร์
ตามปกติฟังก์ชันส่วนใหญ่ต้องการรับสารสนเทศจากผู้เรียกสำหรับการประมวลผล โดยทั่วไปเรียกว่า พารามิเตอร์
ไวยากรณ์พื้นฐาน
การกำหนดฟังก์ให้รับพารามิเตอร์ส่งผ่านโดยการวางข้อมูล ชื่อตัวแปรที่เก็บข้อมูลภายในวงเล็บหลังชื่อฟังก์ชัน การเรียกฟังก์ชันที่ประกอบด้วยพารามิเตอร์เขียนดังนี้
<?php
function show_parameter($param1, $param2, $param3)
{
{
echo <<<PARAM
รายการพารามิเตอร์ <br/>
param1: $param1 <br/>
param2: $param2 <br/>
param3: $param3 <br/>
PARAM;
}
?>
?>
พารามิเตอร์ที่ส่งไปยังฟังก์ชันแยกกันเครื่องหมายจุลภาคภายในวงเล็บ โดยสามารถส่งเป็นนิพจน์สำหรับแต่ละพารามิเตอร์ด้วย ตัวแปร ค่าคงที่ ผลลัพธ์จากการคำนวณ รวมถึงการเรียกฟังก์ชัน
scope ของพารามิเตอร์จำกัดภายในฟังก์ชัน ถ้าชื่อตัวแปรเหมือนกับตัวแปรใน scope ระดับอื่น พารามิเตอร์นี้ "ระบุ" เป็นตัวแปรภายในที่ไม่มีผลกับตัวแปรภายนอกฟังก์ชัน
การส่งผ่านโดยค่า(By Value)
ตามปกติการส่งผ่านพารามิเตอร์ไปยังฟังก์ชันเป็นการส่งผ่านค่า การเปลี่ยนแปลงจะจำกัดภายในเฉพาะภายในฟังก์ชัน
ตัวอย่างฟังก์ชัน new_value () ที่ยอมให้เพิ่มค่า อาจจะเขียนคำสั่งดังนี้
<?php
function new_value($value, $increment= 1)
{
{
$value = $value + $increment;
}
$value = 10 ;
new_value($value);
echo "$value<br/>\n";
?>
คำสั่งนี้ใช้ไม่ได้ ผลลัพธ์จะเป็น "10" ค่าใหม่ของ $value ไม่มีการเปลี่ยนแปลง
สิ่งนี้เป็นเพราะกฎ scope คำสั่งนี้สร้างตัวแปรเรียกว่า $value เป็น 10 เมื่อเรียกฟังก์ชัน new_value () ตัวแปร $value ในฟังก์ชันได้รับการสร้างเมื่อเรียกฟังก์ชัน ค่า 1 ได้รับการเพิ่มให้กับตัวแปร ดังนั้นค่าของ $value คือ 11 ภายในฟังก์ชัน จนกระทั่งสิ้นสุดฟังก์ชัน แล้วกลับไปยังคำสั่งที่เรียกภายในคำสั่งนี้ ตัวแปร $value เป็นอีกตัวแปร global scope และไม่มีการเปลี่ยนแปลง
การส่งผ่านโดยการอ้างอิง (By Reference)
ตามตัวอย่างฟังก์ชัน new_value ถ้าต้องการให้ฟังก์ชันเปลี่ยนแปลงค่าได้ มีวิธีหนึ่งในการแก้ไขคือ ประกาศ $value ในฟังก์ชันเป็น global แต่หมายความว่าในการใช้ฟังก์ชันนี้ ตัวแปรที่ต้องการเพิ่มค่าต้องตั้งชื่อเป็น $value แต่มีวิธีดีกว่าคือ ใช้การส่งผ่านโดยการอ้างอิง
การอ้างอิงไปตัวแปรต้นทางแทนที่มีค่าของตัวเอง การปรับปรุงไปยังการอ้างอิงจะมีผลกับตัวแปรต้นทางด้วย
การระบุพารามิเตอร์ที่ใช้การส่งผ่านโดยการอ้างอิงให้วาง ampersand (&) หน้าชื่อพารามิเตอร์ในข้อกำหนดฟังก์ชัน
ตัวอย่าง new_value () ได้รับปรับปรุงให้มี 1 พารามิเตอร์ส่งผ่านโดยการอ้างอิงและทำงานได้อย่างถูกต้อง
<?php
function new_value(&$value, $increment=1)
{
{
$value = $value + $increment;
}
?>
?>
คำสั่งทดสอบฟังก์ชัน ให้พิมพ์ 10 ก่อนการเรียก increment () และ 11 ภายหลัง
ในการส่งค่าโดยการอ้างอิงต้องส่งเป็นตัวแปรไม่สามารถกำหนดค่าคงที่โดยตรง
จำนวนตัวแปรของพารามิเตอร์
การส่งผ่านพารามิเตอร์ไปยังฟังก์ชันนั้น การควบคุมของ PHP ได้กำหนดฟังก์ชันจำนวนหนึ่งให้ยอมรับจำนวนตัวแปรของพารามิเตอร์ ได้แก่ func_num_args, func_get_arg และ func_get_args
func_num_args() บอกจำนวนพารามิเตอร์ไปยังฟังก์ชันที่เรียก func_get_arg() แสดงค่าของพารามิเตอร์ตามดัชนี และ func_get_args() ส่งออก array ของพารามิเตอร์
<?php
function show_pass_value()
{
{
$idx = count(func_get_args());
echo " จำนวนพารามิเตอร์ $idx <br/>\n";
if ($idx > 0)
echo ">> ใช้ฟังก์ชัน func_get_arg<br/>\n";
for ($i = 0 ; $i < $idx; $i++)
{
echo " พารามิเตอร์ที่ $i ค่า: ". func_get_arg($i)."<br/>\n";}
if ($idx > 0)
echo ">> ใช้ฟังก์ชัน func_get_args<br/>\n";
$params = func_get_args();
foreach ($params as $index => $val)
{
echo " พารามิเตอร์ที่ $index ค่า: $val<br/>\n";}
echo " *********<br/>\n";
}
$x = 4 ;
show_pass_value("one", "two", 3 , $x, " ห้า" , " หก") ;
show_pass_value();
show_pass_value("one", "two", 3 , $x, " ห้า" , " หก") ;
show_pass_value();
?>
ผลลัพธ์
จำนวนพารามิเตอร์ 6
>> ใช้ฟังก์ชัน func_get_arg
พารามิเตอร์ที่ 0 ค่า: one
พารามิเตอร์ที่ 1 ค่า: two
พารามิเตอร์ที่ 2 ค่า: 3
พารามิเตอร์ที่ 3 ค่า: 4
พารามิเตอร์ที่ 4 ค่า: ห้า
พารามิเตอร์ที่ 5 ค่า: หก
จำนวนพารามิเตอร์ 6
>> ใช้ฟังก์ชัน func_get_arg
พารามิเตอร์ที่ 0 ค่า: one
พารามิเตอร์ที่ 1 ค่า: two
พารามิเตอร์ที่ 2 ค่า: 3
พารามิเตอร์ที่ 3 ค่า: 4
พารามิเตอร์ที่ 4 ค่า: ห้า
พารามิเตอร์ที่ 5 ค่า: หก
>> ใช้ฟังก์ชัน func_get_args
พารามิเตอร์ที่ 0 ค่า: one
พารามิเตอร์ที่ 1 ค่า: two
พารามิเตอร์ที่ 2 ค่า: 3
พารามิเตอร์ที่ 3 ค่า: 4
พารามิเตอร์ที่ 4 ค่า: ห้า
พารามิเตอร์ที่ 5 ค่า: หก
พารามิเตอร์ที่ 0 ค่า: one
พารามิเตอร์ที่ 1 ค่า: two
พารามิเตอร์ที่ 2 ค่า: 3
พารามิเตอร์ที่ 3 ค่า: 4
พารามิเตอร์ที่ 4 ค่า: ห้า
พารามิเตอร์ที่ 5 ค่า: หก
*********
จำนวนพารามิเตอร์ 0
จำนวนพารามิเตอร์ 0
*********
Scope
เมื่อต้องการใช้ตัวแปรภายในไฟล์ที่รวม ต้องมีการประกาศตัวแปรเหล่านั้นก่อนประโยคคำสั่ง require () หรือ include () แต่เมื่อใช้ฟังก์ชันจะเป็นการส่งผ่านตัวแปรเชิงประจักษ์เหล่านั้นไปยังฟังก์ชัน บางส่วนเป็นเพราะไม่มีกลไกส่งผ่านตัวแปรเชิงประจักษ์ไปยังไฟล์ที่รวม และบางส่วนเป็นเพราะ scope ของตัวแปรของฟังก์ชันแตกต่างกัน
การควบคุม scope ของตัวแปรเป็นการทำให้ตัวแปรมองเห็นได้ ใน PHP มีกฎตั้งค่า scope ดังนี้
- การประกาศตัวแปรภายในฟังก์ชันอยู่ใน scope จากประโยคคำสั่งซึ่งตัวแปรให้รับการประกาศภายในวงเล็บปีกกา สิ่งนี้เรียกว่า function scope ตัวแปรเรียกว่า local variable
- การประกาศตัวแปรภายนอกฟังก์ชันอยู่ใน scope จากประโยคคำสั่งซึ่งตัวแปรได้รับการประกาศที่สิ้นสุดแต่ไม่ใช้ภายในฟังก์ชัน สิ่งนี้เรียกว่า global scope ตัวแปรเรียกว่า global variable
- การใช้ประโยคคำสั่ง require () และ include () ไม่มีผลกับ scope ถ้าประโยคคำสั่งได้รับการใช้ภายในฟังก์ชัน ประยุกต์ด้วย function scope ถ้าไม่ได้อยู่ภายในฟังก์ชัน ประยุกต์ด้วย global scope
- คีย์เวิร์ด global สามารถระบุได้เองเพื่อกำหนดหรือใช้ตัวแปรภายในฟังก์ชันให้มี scope เป็น global
- ตัวแปร สามารถลบโดยการเรียก unset ($variable_name) และตัวแปรที่ unset จะไม่มี scope
- ตัวแปรระดับ superglobal สามารถเข้าถึงได้ทุกส่วนในสคริปต์
ตัวแปรระดับฟังก์ชัน
ตัวแปรระดับฟังก์ชันหรือ local variable เป็นการประกาศเพื่อใช้เฉพาะภายในฟังก์ชัน ไม่สามารถเรียกจากภายนอกฟังก์ชันได้
<?php
$newline = <<<NLSTRING
<br/>\n
NLSTRING;
$var_global = 10 ;
function show_value()
{
{
global $newline;
$var_local= 75 ;
echo "\$var_local 1: $var_local";
echo $newline;
}
show_value();
echo "\$var_global : $var_global";
echo $newline;
echo "\$var_local 2: $var_local";
echo $newline;
echo "\$var_global : $var_global";
echo $newline;
echo "\$var_local 2: $var_local";
echo $newline;
?>
ผลลัพธ์
$var_global 1 :
$var_local 1: 75
$var_global 1 :
$var_local 1: 75
$var_global 2: 10
$var_local 2:
$var_local 2:
ตามตัวอย่างนี้ ตัวแปรระดับฟังก์ชัน $var_local ไม่สามารถแสดงผลในการพิมพ์ภายนอกฟังก์ชัน show_value() และ $var_global ที่เป็นตัวแปรระดับ global ไม่สามารถแสดงผลภายใน show_value() เพราะมี scope ต่างกัน
ตัวแปรระดับ global
ถ้าต้องการนำตัวแปรระดับ global มาใช้ภายในฟังก์ชันต้องประกาศด้วยคีย์เวิร์ด global ก่อนประโยคคำสั่งที่ใช้ตัวแปรนั้น ตัวอย่าง ฟังก์ชัน show_value() ใช้ $newline จากภายนอกฟังก์ชัน
global $newline;
ตัวแปรสถิตย์
การประกาศตัวแปรสถิตย์ใช้ คีย์เวิร์ด static เมื่อมีการเรียกใช้ฟังก์ชัน โปรแกรมจะกำหนดค่าตัวแปรตามที่ระบุเพียงครั้งเดียว ถ้าเรียกซ้ำอย่างต่อเนื่องค่านี้จะเปลี่ยนแปลงตามการคำนวณ
<?php
function increment()
{
{
static $increase = 5 ;
$increase++;
echo $increase."<br/>\n";
}
$end = 5 ;
for ($i = 1 ; $i < $end; $i++)
increment();
increment();
?>
ผลลัพธ์
6
7
8
9
6
7
8
9
ค่าของตัวแปรสถิตย์ได้รับการตั้งทุกครั้งเมื่อเรียกใช้ในครั้งต่อไป
การส่งออกค่าจากฟังก์ชัน
การส่งค่าออกจากฟังก์ชันใช้คีย์เวิร์ด return เช่นเดียวกับการออกจากฟังก์ชันได้ ถ้าไม่มีการระบุส่งออกฟังก์ชันจะส่งค่า NULL
ตัวอย่าง ฟังก์ชัน get_larger () สาธิตการส่งออกค่า
<?
function get_larger($x=NULL, $y=NULL)
{
{
if (!isset($x) || !isset($y))
return " ไม่มีการส่งค่า" ;
return " ไม่มีการส่งค่า" ;
if ($x > $y)
return $x;
else if ($x < $y)
return $y;
else
return " ค่าเท่ากัน" ;
return $x;
else if ($x < $y)
return $y;
else
return " ค่าเท่ากัน" ;
}
$sends = array();
$sends[0] = array('x' =>5);
$sends[1] = array('x' =>9, 'y'=>3);
$sends[2] = array('x' =>5, 'y'=>8);
$sends[3] = array('x' =>4, 'y'=>4);
$sends[0] = array('x' =>5);
$sends[1] = array('x' =>9, 'y'=>3);
$sends[2] = array('x' =>5, 'y'=>8);
$sends[3] = array('x' =>4, 'y'=>4);
foreach ($sends as $send)
{
{
echo "x = ".$send['x']." y = ".$send['y']." : ค่า - > "
.get_larger($send['x'], $send['y']);
echo "<br/>\n";
}
?>
ผลลัพธ์
x = 5 y = : ค่า - > ไม่มีการส่งค่า
x = 9 y = 3 : ค่า - > 9
x = 5 y = 8 : ค่า - > 8
x = 4 y = 4 : ค่า - > ค่าเท่ากัน
x = 5 y = : ค่า - > ไม่มีการส่งค่า
x = 9 y = 3 : ค่า - > 9
x = 5 y = 8 : ค่า - > 8
x = 4 y = 4 : ค่า - > ค่าเท่ากัน
ฟังก์ชันที่ทำงานอาจเดียว แต่ไม่จำเป็นต้องส่งออกค่า มักจะส่งออก TRUE หรือ FALSE เพื่อระบุความสำเร็จหรือล้มเหลว ค่า TRUE หรือ FALSE สามารถได้รับการแสดงแทนด้วย 1 หรือ 0
Recursion
recursion ได้รับการสนับสนุนใน PHP ฟังก์ชันชนิดนี้เป็นการเรียกตัวเองและเป็นประโยชน์กับการบังคับโครงสร้างข้อมูลไดนามิคส์ เช่น รายการเชื่อมโยงและโครงสร้างต้นไม้ (tree)
โปรแกรมประยุกต์เว็บจำนวนไม่มากต้องการโครงสร้างข้อมูลซับซ้อนมากและจำกัดการใช้ เนื่องจาก recursion ช้ากว่าและใช้หน่วยความจำมากกว่าการทำงานวนรอบ ดังนั้นควรเลือกการทำงานแบบวนรอบปกติ ถ้าเป็นไปได้
ตัวอย่างการประยุกต์แบบย้อนกลับตัวอักษร
<?php
function word_reverse_r($str)
{
{
if (strlen($str)>0)
word_reverse_r(substr($str, 1));
echo substr($str, 0, 1);
return;
}
function word_reverse_i($str)
{
{
for ($i=1; $i<=strlen($str); $i++)
{
echo substr($str, -$i, 1);}
return;
}
?>
?>
รายการคำสั่งของ 2 ฟังก์ชันนี้จะพิมพ์ข้อความย้อนกลับ ฟังก์ชัน word_reverse_r เป็น recursion ฟังก์ชัน word_reverse_i เป็นการวนรอบ
ฟังก์ชัน word_reverse_r ใช้ข้อความเป็นพารามิเตอร์ เมื่อมีการเรียกฟังก์ชันนี้ จะเกิดการเรียกตัวเองแต่ละครั้งส่งผ่านตัวอักษรที่ 2 ไปถึงตัวอักษรสุดท้าย
การเรียกฟังก์ชันแต่ละครั้งจะทำสำเนาใหม่ของคำสั่งในหน่วยความจำของแม่ข่าย แต่ด้วยพารามิเตอร์ต่างกัน ดังนั้นจึงเหมือนกับการเรียกคนละฟังก์ชัน
สมัครสมาชิก:
บทความ (Atom)



