570 likes | 807 Views
ตัวแปร ตัวดำเนินการและนิพจน์. วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์) sobree@skt.ac.th. ตัวแปร ( variable). ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ในหน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล ชื่อตัวแปรในภาษา PHP จะเริ่มต้นด้วยเครื่องหมาย dollar ($)
E N D
ตัวแปร ตัวดำเนินการและนิพจน์ วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์) sobree@skt.ac.th
ตัวแปร (variable) • ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ในหน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผลชื่อตัวแปรในภาษา PHP จะเริ่มต้นด้วยเครื่องหมาย dollar ($) • ไม่ต้องประกาศและกำหนดแบบของข้อมูล(data type) อย่างเจาะจงเหมือนในภาษาซี หรือ ปาสคาล • ตัวแปลภาษาจะจำแนกเองโดยอัตโนมัติว่า ตัวแปรดังกล่าว ใช้ข้อมูลแบบใดในช่วงเวลานั้นๆ
การกำหนดค่าให้ตัวแปร • การกำหนดค่าให้กับตัวแปรจะใช้คำสั่งกำหนดค่า (Assigment Statement) รูปแบบมีดังนี้ $ชื่อตัวแปร = ค่าที่เก็บ ; $mystring = "Hello World!"; $myinteger = 72; $myfloat = 3.14; echo "$mystring\n"; echo "$myinteger\n"; echo "$myfloat\n";
ตัวอย่าง var2-0.php <? $x = 10; $y = $x + 15.5; echo "$x, $y<BR> \n"; $x = "abc"; echo "$x <BR>\n"; $z = $x + 15.5; echo "$x, $z <BR>\n"; echo ("100.5" - 16); echo (0xef + 007); ?> 10, 25.5 abc abc, 15.5 84.5246
ชนิดของตัวแปรในภาษา PHP • ตัวแปรในภาษา PHP จำแนกได้เป็น 3 ชนิดคือ • Scarlar varible • Array variable • Object variable
Scarlar variable • ตัวแปรสเกลาร์คือตัวแปรที่ใช้เก็บข้อมูล ที่เป็นจำนวนเต็ม (Integer), จำนวนทศนิยม (floating point)หรือ สตริงก์ (String)
ตัวอย่าง var2-1.php <? // Assign a value of 46 to a variable // called $int_page_nummber. $int_page_number = 46; echo “$int_page_number\n”; // Assign a string value to a variable // called $str_magazine_title. $str_magazine_title = 'PHP is good!'; echo “$str_magazine_title”; ?> 46 PHP is good!
ตัวอย่างvar-2.php <? // Assign a value of 46 to a variable // called $int_page_nummber. $int_page_number = 46; // Increment the page number variable. $int_page_number = $int_page_number + 1; echo “$int_page_number\n”; ?> 47
ตัวแปรอาร์เรย์ (Array Variables) • ตัวแปรอาร์เรย์ในภาษา PHP เป็นตัวแปรที่ใช้เก็บข้อมูลที่เป็นชนิดเดียวกันหรือต่างชนิดกัน ลักษณะการเก็บจะเป็นชุดหรือเป็นแถวเรียงต่อกัน.. การกำหนดตัวแปรแบบอาร์เรย์ในภาษา PHP กำหนดโดยเครื่องหมาย $นำหน้าชื่อของตัวแปรนั้น • แบบที่ 1 $arr_zoo[‘perican’] = ‘ Bird with a big beak.’ ; $arr_zoo[‘cheetah’] = ‘ Fast cat.’ ; $arr_zoo[‘horse’] = ‘ Four-legged animal.’ ;
แบบที่ 2 $arr_names[] = ‘Mitch’ ; $arr_names[] = ‘Gerry’ ; $arr_names[] = ‘Tim’ ; • แบบที่ 3 $key = ‘pelican’ ; $value = $arr_zoo[$key] ; หรือ $value = $arr_zoo[pelican] ;
ตัวอย่าง var2-3.php <? function dump_array($var) { switch (gettype($var)) { case 'integer': case 'double': case 'string': echo $var; break; case 'array': echo '<table border="1">'; do { echo '<tr><td align="left" valign="top">'; echo key($var); echo '</td><td>'; dump_array($var[key($var)]); echo '</td></tr>'; } while (next($var));
echo '</table>'; break; default: echo 'Unknown data type.'; break; } } $arr_zoo = array( 'Pelican' => 'Bird with a big beak.' ,'Cheetah' => 'Fast cat.' ,'Horse' => 'Four-legged animal.' ); dump_array($arr_zoo); ?>
Variable Interpolation หมายถึงการที่ภาษา PHP สามารถที่จะแทนชื่อตัวแปรด้วยค่าที่เก็บภายใต้เครื่องหมาย double-quote (“ “)เช่น $str_size = ‘big’ ; echo “Jack was a $str_size man.” ; ซึ่งจะได้ผลลัพธ์เป็น Jack was a big man. แต่ถ้ากำหนดเป็น $str_size = ‘big’ ; echo “Jack was a $str_sizeger man.” ;
Dynamic Variable Names • ภาษา PHP อนุญาตให้มีการสร้าง ตัวแปรแบบ dynamic โดยในขณะที่โปรแกรมกำลังรันอยู่ สามารถสร้างตัวแปรใหม่ได้โดยใช้สัญลักษณ์พิเศษ // store the name of dynamic variable. $scl_dynamic = ‘str_name’ ; // assign a value to the dynamic variable. $$scl_dynamic = ‘John’ ; echo “\$scl_dynamic = $str_name\n” ; ซึ่งจะได้ผลลัพธ์เป็น $scl_dynamic = John
การกำหนดค่าคงที่(Constants) • ในภาษา PHP มีการกำหนดสัญลักษณ์ให้เก็บค่าคงที่ เช่นอาจจะเป็นสตริงก์หรือตัวเลขก็ได้ • กำหนดโดยใช้ คำสั่ง define()สัญลักษณ์ที่กำหนดโดยคำสั่ง define() จะเหมือนกันตัวแปรทั่วๆไปแต่แตกต่างตรงที่ว่า เมื่อนิยามแล้วจะเปลี่ยนแปลงค่าอีกไม่ได้
ตัวอย่าง var2-30.php <HTML> <HEAD> <TITLE>Figure 2-7</TITLE> </HEAD> <BODY> <? define("STANDARD_GREETING", "Hello, World!"); print(STANDARD_GREETING); ?> </BODY> </HTML> Hello, World!
ตัวอย่าง var2-31.php <? define(PI, 3.141592654); define(YES, true); define(NO, false); define("AUTHOR", "RWS"); echo (PI/3),"<BR>\n"; echo "AUTHOR=".AUTHOR."<BR>\n"; echo "YES=".YES."<BR>\n"; ?> 1.0471975513333 AUTHOR=RWS YES=1
การอ่านและแปลงแบบข้อมูลในตัวแปรหรือค่าคงที่แบบเจาะจงการอ่านและแปลงแบบข้อมูลในตัวแปรหรือค่าคงที่แบบเจาะจง เราสามารถแปลงแบบข้อมูลจากแบบหนึ่งไปยังอีกแบบหนึ่ง (type casting) เช่นแปลงจากข้อความที่มีเฉพาะตัวเลขให้กลายเป็นเลขจำนวนเต็ม (int) หรือทศนิยม(double, float, real) หรืออาจจะใช้คำสั่ง settype()
ตัวอย่างvar2-32.php <? $x = ((double)"100.1") + 0.3e+3; echo $x," <BR>\n"; echo ($x=(int)$x)," <BR>\n"; $x = "P".$x."\n"; echo $x," <BR>\n"; $x= ceil(13.45); /* get integer part */ echo $x," <BR>\n"; if (!settype( $x, "integer") ) { echo "error\n"; } echo $x," $x%5=",($x%5)," <BR>\n"; ?> 400.1 400 P400 14 14 14%5=4
ตัวอย่าง2-2.php <HTML> <HEAD> <TITLE> Using settype </TITLE> </HEAD> <BODY> <? print("<B>Using settype</B><BR>\n"); $AverageTemperature = "60.5 degrees"; print("String: $AverageTemperature <BR>\n"); settype($AverageTemperature, "double"); print("Double: $AverageTemperature <BR>\n"); settype($AverageTemperature, "integer"); print("Integer: $AverageTemperature <BR>\n");
settype($AverageTemperature, "string"); print("String: $AverageTemperature <BR>\n"); print("<BR>\n"); print("<B>Using strval, intval, "); print("and doubleval</B><BR>\n"); $AverageTemperature = "60.5 degrees"; print("String: "); print(strval($AverageTemperature)); print("<BR>\n"); print("Double: "); Using settype String: 60.5 degrees Double: 60.5 Integer: 60 String: 60 Using strval, intval, and doubleval String: 60.5 degrees Double: 60.5 Integer: 60 String: 60.5 degrees
print(doubleval($AverageTemperature)); print("<BR>\n"); print("Integer: "); print(intval($AverageTemperature)); print("<BR>\n"); print("String: "); print(strval($AverageTemperature)); ?> </BODY> </HTML>
การอ่านแบบข้อมูลของตัวแปรหรือค่าคงที่การอ่านแบบข้อมูลของตัวแปรหรือค่าคงที่ ถ้าต้องการตรวจว่า ตัวแปรมีข้อมูลแบบใด เราสามารถใช้คำสั่ง gettype() ได้ ค่าที่ได้จากฟังก์ชันก็จะเป็น "integer" "double" หรือ "string" เป็นต้น
ตัวอย่าง var2-33.php <? echo gettype(0),”<BR>\n"; echo gettype(1.1),”<BR>\n"; echo gettype(""),”<BR>\n"; echo gettype((1==1)),”<BR>\n"; $var="abc"; if ( gettype($var)=="string" ) { echo "this is a string<BR>\n"; } ?> integer double string integer this is a string
ตัวอย่าง var2-34.php unset($a); $a="hello"; if (is_string($a) == true) { echo "\$a is a string <BR>\n"; } unset($a); $a[]="red"; $a[]="green"; $a[]="blue"; if (is_array($a) == true) { echo "\$a is an array of size ",count($a),"<BR>\n"; } ?> $a is a string $a is an array of size 3
การใช้ echo เพื่อแสดงข้อความ (เพิ่มเติม) การพิมพ์ค่าใดๆที่เก็บอยู่ในตัวแปร ถ้าชื่อของตัวแปรอยู่ในสตริงก์ระหว่างdouble quote เวลาแสดงผลลัพธ์แล้วจะอ่านค่าของตัวแปรนั้นก่อนแล้วจึงแทนที่ลงในข้อความ แต่ถ้านำหน้าด้วยbackslash (\) ก็จะไม่มีการอ่านค่าของตัวแปร เช่น "\$a" จะให้ผลต่างจาก "$a"
ตัวอย่าง var2-35.php <? $a=1; echo "\$a=$a <BR>\n"; $test = "test"; echo "$test$test$test<BR>\n"; echo $test,$test,$test,"<BR>\n"; $a = 1; $b = 2; echo $a,"+",$b,"=","$a+$b","<BR>\n"; echo $a,"+",$b,"=",$a+$b,"<BR>\n"; ?> $a=1 testtesttest testtesttest 1+2=1+2 1+2=3
ตัวอย่าง var2-36.php สำหรับข้อความในภาษา PHP เราอาจจะใช้ single qoute แทน double quote ได้แต่เวลาใช้งานร่วมกับ echo หรือ print() จะให้ผลต่างกันซึ่งสังเกตได้จากตัวอย่างต่อไปนี้ <? $a = "aaa"; $b = 'bbb'; echo "$a $b<BR>\n"; echo '$a $b<BR>\n'; ?> aaa bbb $a $b \n
คำสั่ง print ใช้แสดงค่าเช่นเดียวกับคำสั่ง echo แต่คำสั่ง print นั้นสามารถแสดงค่าได้ครั้งละหนึ่งค่าเท่านั้น รูปแบบคำสั่ง print (“ข้อความที่ต้องการแสดง“);
ตัวอย่างvar2-5.php <? $Today = date("l F d, Y"); ?> <HTML> <HEAD> <TITLE>Example–5</TITLE> </HEAD> <BODY> Today’s Date: <? /* ** print today’s date */ print("<H3>$Today</H3>\n"); /* ** print message about lunch cost */ print("$YourName, you will be out "); print($CostOfLunch * $DaysBuyingLunch); print(" dollars this week.<BR>\n"); ?> </BODY> </HTML> Today's Date: Tuesday April 04, 2000 , you will be out 0 dollars this week.
คำสั่ง printf • ใช้แสดงค่าเช่นเดียวกับคำสั่ง echo และคำสั่ง print แต่ printf สามารถกำหนดรูปแบบในการแสดงผลของข้อมูลได้ด้วย • รูปแบบคำสั่ง printf (”รูปแบบข้อมูล”, “ ข้อความที่ต้องการแสดง“, …);
ตัวอย่าง var2-6.php <? $name =”Seree Chinodom” ; $m1 = 2000 ; $m2 = 3.1415 ; $char = 65 ; printf(“ Name : %s , m1 = %d , m2 = %8.2f <BR>”, $name, $m1, $m2) ; printf(“Character = %c <BR>”, $char) ; ?> Name : Seree Chinodom , m1 = 2000 , m2 = 3.14 Character = A
ตัวดำเนินการ (Operators) • คือสัญลักษณ์ที่จะสั่งให้ PHP ดำเนินการกับตัวเลขหรือข้อความ • ตัวดำเนินการบางตัวจะดำเนินการกับตัวที่ถูกกระทำ(operand)เพียงตัวเดียวแต่บางตัวต้องมีตัวถูกกระทำสองตัว
ตัวดำเนินการคณิตศาสตร์ (Arithematic Operations) • คือตัวดำเนินการที่กระทำกับตัวถูกดำเนินการที่เป็นตัวเลข มีดังนี้คือ สัญลักษณ์ ชื่อตัวอย่าง +Addition $a + $b -Subtraction $a - $b *Multiplication $a * $b /Division $a / $b % Modulus $a % $b
ตัวอย่าง • ตัวอย่าง $a = ($b = 4) + 5;// $a มีค่าเป็น 9 และ $b มีค่าเป็น 4
ตัวอย่าง var2-7.php <? for ($index = 1; $index <= 100; $index++) { if ($index % 10 == 0) { echo "$index<br>"; } } ?> 10 20 30 40 50 60 70 80 90 100
การเพิ่มหรือลดค่าของตัวเลขในตัวแปรทีละหนึ่งการเพิ่มหรือลดค่าของตัวเลขในตัวแปรทีละหนึ่ง • ใช้เครื่องหมาย ++ และ - - เพื่อเพิ่มค่าทีละหนึ่งหรือลดค่าทีละหนึ่ง ดังนี้ $x++ เพิ่มค่าขึ้นอีกหนึ่ง ++$x เพิ่มค่าขึ้นอีกหนึ่ง $x-- ลดค่าลงอีกหนึ่ง --$x ลดค่าลงอีกหนึ่ง
ตัวอย่าง $a = 5; &b = $a++; echo “ a = $a<BR>”; echo “ b = $b<BR>”; a = 6 b = 5
ตัวอย่าง $a = 5; &b = -$a++; echo “ a = $a<BR>”; echo “ b = $b<BR>”; a = 6 b = -5
ตัวดำเนินการสตริงก์ (String Operations) คือตัวดำเนินการที่ใช้ในการเชื่อมข้อความหลายข้อความให้เป็นข้อความเดียว ภาษา PHP มีตัวดำเนินการสตริงก์เพียงตัวเดียวคือจุด (" .") ดังตัวอย่างเช่น $a = "Hello !"; $b = $a . "World !" ; // $b จะมีค่าเท่ากับ Hello World !
ตัวดำเนินการ Bitwise เป็นตัวดำเนินการที่ใช้กระทำกับค่าข้อมูลในระดับบิตได้ โดยค่าของข้อมูลที่เก็บเป็นเลขฐานสิบจะเปลี่ยนมาเป็นเลขฐานสอง 2 ค่าคือจริงและเท็จ
สัญลักษณ์ของตัวดำเนินการ Bitwise สัญลักษณ์ ชื่อ หมายเหตุ & And And | Or Or ~ Not Not ^ Xor Exclusive Or << - Shift left >> - Shift right
ตัวอย่าง $int_a = 128 ; $int_b = $int_a >> 2 ; echo “$int_b <BR>” ; ส่วนของโปรแกรมนี้แสดงผลลัพธ์คือ 32
ตัวอย่าง $int_a = 128 ; $int_b = $int_a << 3 ; echo “$int_b <BR>” ; ส่วนของโปรแกรมนี้แสดงผลลัพธ์คือ 1024
ตัวดำเนินการตรรก (Logical Operators) • เป็นตัวดำเนินการที่ใช้กระทำกับค่าข้อมูลที่มีค่าได้ 2 ค่าคือจริงและเท็จ • สัญลักษณ์ของตัวดำเนินการตรรก สัญลักษณ์ ชื่อ ตัวอย่าง and And $a and $b or Or $a or $b xor Xor $a xor $b ! Not ! $a && And $a && $b || Or $a || $b
ตัวอย่าง If ($int_a ==9 || $int_a ==10) { echo “Error!<BR>”;
ตัวดำเนินการเงื่อนไข(Conditional Operators) คือตัวดำเนินการที่ใช้การเปรียบเทียบข้อมูลเพื่อสร้างเงื่อนไข == equal != not equal <> not equal < less than <= less than or equal > greater >= greather or equal
The Ternary Operator • รูปแบบคือ (expr1) ? (expr2) : (expr3) • การนำไปใช้ให้ดูที่ ค่าของ expr1ว่าเป็นจริงหรือเท็จ ถ้าเป็นจริง (มีค่ามากกว่า 0) ให้ ประมวลผล expr2 แต่ถ้า expr1เป็นเท็จ (มีค่าเป็น 0) ให้ ประมวลผล expr3 • ตัวอย่าง $bln_page_two = ($int_page_number == 2) ? 1 : 0 ;
ลำดับการทำงานของตัวดำเนินการ (Operator Precedence) • การบอกให้ทราบว่าเครื่องหมายนี้จะมีวิธีการคิดไปทางขวาหรือทางซ้ายที่แตกต่างกัน เช่น 1 + 5 * 3 มีค่าเป็น 16 ไม่ใช่ 18 ต้องคิด จากซ้ายไปขวาเพราะ (" * ") เป็น Operation ที่เหนือกว่า (" + ") • พิจารณาว่าตัวดำเนินการตัวใดมีลำดับชั้นของ Precedence ต่ำกว่ากัน
การกำหนดค่าของตัวแปรที่เป็นตัวเลขหรือสตริงก์ โดยใช้ assignment operators • การกำหนดค่า (assignment ) หรือเปลี่ยนแปลงค่าให้แก่ตัวแปรจะใช้ตัวดำเนินการกำหนดค่า (assignment operators) ได้ในหลายๆรูปแบบเหมือนอย่างที่ใช้ในภาษาซี เช่น $x=0; $x += 1; // เหมือนกับ $x = $x + 1; $x--; // เหมือนกับ $x = $x - 1; $x *= 3; // เหมือนกับ $x = $x * 3; $x /= 2; // เหมือนกับ $x = $x / 2; $x %= 4; // เหมือนกับ $x = $x % 4;