วันเสาร์ที่ 6 ธันวาคม พ.ศ. 2557

ฟังก์ชัน (Functions)

5. ฟังก์ชัน (Functions)
- มีหลักพัน รู้จักแค่หลักร้อย แต่ใช้แค่หลักสิบ
- ไม่จำเป็นจำได้ทุกตัว แต่รู้ว่ามีให้ใช้ และเลือกใช้ได้อย่างเหมาะสม .. ก็พอ
- Function แบบสร้างขึ้นใช้เอง แบ่งเป็น internal และ external มีความสำคัญมาก

ex.501

zz501.php
แสดงค่า Configuration
<?
phpinfo();
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
ตาราง แสดงข้อมูลมากมาย
# ดูว่าสนับสนุน GD เพื่อเขียนภาพ Graphic หรือไม่
# ดู DOCUMENT_ROOT ใน Environment เป็นต้น

ex.502

zz502.php
คำสั่งตัดคำด้วยคำสั่ง substr
<?
$a = "abcde";
echo substr($a,0,2) , "<br>";
echo substr($a,2,2) , "<br>";
echo substr($a,2) , "<br>";
echo substr($a,-2) , "<br>";
echo strlen("abc") , "<br>";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
ab
cd
cde
de
3
# ควรหาคำตอบ ว่าคำสั่ง และผลลัพธ์ เป็นเช่นนั้น เพราะอะไร

ex.503

zz503.php
ฟังก์ชันเกี่ยวกับเวลา และการสุ่ม
<?
srand(microtime()*1000000);
echo rand(1,10)."<br>";
echo microtime()."<br>";
echo microtime() + microtime()."<br>";
echo time()."<br>";
echo date("d/m/Y H:i:s")."<br>";
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
2
0.04055200 1146796189
0.081168
1146796189
05/05/2006 09:29:49
# แสดงฟังก์ชันเกี่ยวกับเวลา และค่าที่ได้จากการสุ่ม
# rand มาจากคำว่า random แปลว่าสุ่ม ได้ค่าระหว่าง 1 ถึง 10

ex.504

zz504.php
ฟังก์ชัน require และ include แบบ html
<body>
<? require("zz502.php"); ?>
<hr>
<? include("zz503.php"); ?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ถ้าพบ error ในแฟ้ม x.php จะเป็น Fatal Error
# ถ้าพบ error ในแฟ้ม y.php จะเป็น Warning
# ตามทฤษฎี เขาว่าอย่างนั้น

ex.505

zz505.php
zz505a.php
zz505b.php
ฟังก์ชัน require และ include แบบเต็ม
<?
$a=1;
$b="one";
?>
<?
# zz505a.php
require("zz505.php");
echo $a,$b;
?>
<?
# zz505b.php
include("zz505.php");
echo $a,$b;
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
1one
# ตัวอย่างนี้มี 3 แฟ้ม คือ setvar.php use1.php use2.php
# โปรแกรมกำหนดค่าให้โปรแกรมอื่นเรียกใช้ คือ setvar.php
# โปรแกรมเรียกใช้แฟ้มกำหนดค่าคือ use1.php และ use2.php

ex.506

zz506.php
ฟังก์ชันตรวจสอบตัวแปร
<form action=zz506.php method=post>
<input name=pass>
<input type=submit>
</form>
<? if (!isset($_POST["pass"])) exit; ?>
Test Test Test
ตัวอย่างผลลัพธ์ หรืออธิบาย
# ถ้ามีตัวแปร pass ส่งเข้ามา ก็จะพิมพ์ Test 3 คำ

ex.507

zz507.php
สร้างฟังก์ชันแบบ internal แบบธรรมดา
<?
a();
echo "b";
a();
?>
bb
<?
function a() {
  echo "a";
  echo "x";
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
axbaxbb
# แสดงการประกาศฟังก์ชันครั้งเดียว แต่เรียกใช้ 2 ครั้ง

ex.508

zz508.php
สร้างฟังก์ชันแบบ internal แบบรับค่า
<?
a(5,6);
function a($b1,$b2) {
  echo "$b1 + $b2 = ", $b1 + $b2;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
5 + 6 = 11
# ส่งค่าให้กับฟังก์ชันใช้งาน

ex.509

zz509.php
สร้างฟังก์ชันแบบ internal แบบรับ และคืนค่า
<?
echo a(5,6);
echo a(5,6);
function a($b1,$b2) {
  $t = $b1 + $b2;
  return $t;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
1111
# แสดงการรับปกติ
# คืนค่าให้ฟังก์ชันด้วย return


ex.510

zz510.php
สร้างฟังก์ชันแบบ internal แบบคืนค่า
<?
$b1 = 5;
$b2 = 6;
echo a(),b();
function a() {
  global $b1,$b2;
  $t = $b1 + $b2;
  return $t;
}
function b() {
  global $b1,$b2;
  $t = $b1 + $b2;
  return $t;
}
?>
ตัวอย่างผลลัพธ์ หรืออธิบาย
1111
# ส่งผ่านตัวแปรแบบ global เข้าไปในฟังก์ชัน
# ต้องประกาศแบบ global ในทุกฟังก์ชัน
# ประกาศข้างนอก ก็ยังไม่สามารถใช้ใน function