ในกรณีนี้เราต้องการจะใช้ตัวแปร $a และ $b ซึ่งอยู่นอกฟังก์ชัน getMin() เพื่อเช็คดูว่า ค่าของตัวแปรใดมีค่าน้อยกว่ากัน ถ้าเราไม่แจ้งใช้ global $a, $b; ตามตัวอย่างแล้ว $a และ $b จะกลายเป็นตัวแปรภายในแม้ว่าจะชื่อเหมือนกันตัวแปรภายนอกที่มีอยู่แล้วก็ตาม ทำให้ได้ผลการทำงานไม่ถูกต้องตามที่ต้องการ
ฟังก์ชัน getMin() อีกรูปแบบหนึ่ง โดยไม่ใช้ตัวแปรแบบ global ภายในฟังก์ชัน และใช้วิธีผ่านค่าแทน
<?
$a = 10;
$b = 20;
function getMin ($a, $b) {
if ($a < $b)
return $a;
else
return $b;
}
echo getMin($a, $b)."<BR>\n";
?>
การตัวแปรแบบ static ภายในฟังก์ชัน
สมมุติว่า เราต้องการจะใช้ตัวแปรภายในฟังก์ชัน และสามารถเก็บค่าไว้ได้ตลอดเวลา โดยไม่สูญหายไปทุกครั้งที่มีการเรียกใช้ฟังก์ชัน ในกรณีนี้เราจะแจ้งใช้ตัวแปรให้เป็นแบบ static ตามตัวอย่างต่อไปนี้
function MyFunc() {
static $num_func_calls = 0;
echo "my function\n";
return ++$num_func_calls;
}
ทุกครั้งที่มีการเรียกใช้ฟังก์ชันดังกล่าว ตัวแปรชื่อ $num_func_calls ซึ่งมีค่าเริ่มต้นเป็นศูนย์ในตอนแรก จะเพิ่มค่าที่เก็บขึ้นทีละหนึ่ง
การผ่านค่ากลับคืนมากกว่าหนึ่งจากฟังก์ชัน
โดยปรกติแล้วเราไม่สามารถผ่านค่ากลับคืนจากฟังก์ชันได้มากกว่าหนึ่ง แต่อย่างไรก็ตาม ยังมีวิธีการหนึ่งที่ช่วยแก้ปัญหาดังกล่าวได้ วิธีนี้คือ เก็บค่าต่างๆที่ต้องการจะใช้เป็นค่ากลับคืนไว้ใน array แล้วใช้ array นั้นเป็นค่ากลับคืน และผู้เรียกใช้ฟังก์ชันสามารถใช้ฟังก์ชัน list() อ่านค่าเหล่านั้นได้ ตัวอย่างเช่น
<?
function foobar() {
return array ("foo", "bar", 0xff);
}
list ($foo, $bar, $num) = foobar();
echo "$foo $bar $num <BR>\n";
?>
จากตัวอย่าง ฟังก์ชัน foobar() จะให้ค่ากลับคืนเป็น array ประกอบด้วยสามสมาชิก ค่าที่ได้จากฟังก์ชันนี้ก็จะส่งไปยังฟังก์ชัน list() เพื่อให้เก็บแยกลงในตัวแปรตามชื่อที่กำหนดคือ $foo, $bar และ $num ตามลำดับ
Cookie คืออะไร ?
เป็นการเก็บค่าจาก Server มาเก็บใว้ที่เครื่อง Client โดยเก็บใว้ในรูปไฟล์ พูดง่าย ๆ ก็คือ การเขียนลงไฟล์นั้นเอง
ซึ่งจะถูกเก็บใว้ที่ Windows\Cookies
ทำความเข้าใจก่อนครับ
การ Set Cookie จะต้อง Set ใว้ในส่วนบนสุดครับ ( header )
การสร้าง Cookie
รูปแบบ
setcookie(cookie-name,value,[Time]);
หรือจะกำหนดจากตัวค่าตัวแปร
$va-name-value = value";
setcookie(var-name, $var-name-value,[Time] );
เมื่อ
Cookie-name ชื่อ ของ Cookie
value,$var-name-value คือ ค่าของ Cookie
Time กำหนดเวลาหมดอายุของ Cookie
ตัวอย่าง 1
Setcookie("name","วีระชัย นุกิจรัมย์",time()+3600); // กำหนดเวลา 1 ชั่วโมง
ตัวอย่าง 2
$name="นายวีระชัย นุกิจรัมย์";
Setcookie("name",$name,time()+60); // กำหนดเวลา 1 นาที
การอ่านค่าจาก Cookie
$cookie-name
echo"$cookie-name";
การกำหนดวันหมดอายุของ Cookie
รูปแบบ
Time() , Date()
ตัวอย่าง
Setcookie("name",$name,time()+60); // กำหนดเวลา 1 นาที
การลบ Cookie
รูปแบบ
SetCookie("Cookie-name")
เช่น
SetCookie("name") // เป็นการลบ Cookie name ออก
หากยังไม่เข้าใจลองมาดูตัวอย่างกันหน่อยครับ
sample1.php เป็นการกำหนดและตั้งค่า Cookie
<?
$name="วีระชัย นุกิจรัมย์";
$old=21;
Setcookie("name",$name,time()+60);
Setcookie("old",$old,time()+60);
?>
ได้กำหนดค่าให้ Cookie แล้ว<br>
ตรวจสอบค่า Cookie <a href="Sample2.php">Sample2.php</a>
Out put

sample2.php เป็นการแสดงค่าใน Cookie
<?
echo "ค่าใน Cookie name คือ $name <br>";
echo "ค่าใน Cookie old คือ $old <br>";
?>
<br>
<br>
ตรวจสอบค่า Cookie อีกครั้ง <a href="Sample3.php">Sample3.php</a>
Out put

sample3.php เป็นการแสดงค่าใน Cookie อีกครั้ง
<?
echo "ค่าใน Cookie Name จะยังเป็น $name <br>";
echo "ค่าใน Cookie Old จะยังเป็น $old <br>";
?>
<br>
ตั้งค่า Cookie <a href="Sample1.php">Sample1.php</a>
Out put

เพิ่มเติมครับ การใช้ ob_start(); เพื่อให้สามารถกำหนด Setcookie ใว้ส่วนใดก็ได้
ปกติการ SetCookie เราต้องกำหนดใว้ส่วนบนสุด หรือ headder แต่ถ้าเราใส่ ob_start(); จะสามารถกำหนดใว้ส่วนอื่น ๆ ได้ เช่น การใช้คำสั่ง echo ใว้ก่อน SetCookie ซึ่งถ้าไม่ใส่ ob_start(); จะไม่สามารถใช้คำสั่ง echo ได้ ดังตัวอย่างต่อไปนี้ครับ
Sample1.php
<?
ob_start();
echo "ปกติจะไม่สามารถ แทรกส่วนตรงนี้ได้ <br>";
setcookie("name", "นายวีระชัย นุกิจรัมย์", time() + 60);
echo "แต่ตอนนี้ได้กำหนดค่าให้ Cookie name แล้ว ";
ob_end_flush();
?>
Out Put

ในหัวนี้เราจะได้เรียนรู้การใช้งานฟังก์ชั่น ฟังก์ชั่นประกอบด้วย 2 ประเภทคือ
1.ฟังก์ชั่นที่ php ให้มา สามารถเรียกใช้งานได้ทันที ซึ่งเราจะเรียนรู้ในหัวข้อต่อไป
2.ฟังก์ชั่นที่เราสร้างขั้นมาเอง
การใช้งานฟังก์ชั่น
- ฟังก์ชั่นทไม่มีการส่งค่า
function_name()
- ฟังก์ชั่นที่มีการส่งค่า
function_name(argument....)
การสร้างฟังก์ชั่นขึ้นมาเอง
- ฟังก์ชั่นที่ไม่มีการส่งค่า
Sample1.php
<html>
<body>
<?
echo"จะแทรกใว้ส่วนบนของ Function ก็ได้";
Test_function();
function Test_function()
{
echo"Hello Word <br>";
echo"Hello Werachai nukitram <br>";
echo"Hello PHP Programming<br>";
echo"Hello The Member Theasp <br>";
}
echo"<br><br>หรือจะแทรกใว้ส่วนล่างของ Function ก็ได้";
Test_function();
?>
</body>
</html>
Out Put
จะแทรกใว้ส่วนบนของ Function ก็ได้Hello Word
Hello Werachai nukitram
Hello PHP Programming
Hello The Member Theasp
หรือจะแทรกใว้ส่วนล่างของ Function ก็ได้Hello Word
Hello Werachai nukitram
Hello PHP Programming
Hello The Member Theasp
- ฟังก์ชั่นที่มีการส่งค่า
Sample2.php
<html>
<body>
<?
function Test_function($a)
{
return($a * 20 );
}
$b=20;
echo Test_function($b);
?>
</body>
</html>
Out Put
400
การใช้งาน Function Include , Redirect และ require
- Include เป็นการเรียกใช้งานไฟล์อื่น เพื่อทำงานร่วมกับ ไฟล์ที่กำลังทำงานอยู่
รูปแบบ
Include("files-name")
Smaple1.php
<?
ob_start();
?>
<html>
<body>
<?
Include("sample2.php"); // เป้นการเรียกใช้งาน sample2.php
?>
</body>
</html>
- Redirect เป็นการย้ายการทำงานจาก ไฟล์หนึ่ง ไปยังอีกไฟล์หนึ่ง นิยมนำมาใช้ในระะรักษาความปลอดภัย และ การกระโดดไปยังไฟล์ต่าง ๆ โดยเรียกใช้ฟังก์ชั่น headder
รูปแบบ
header("location : [files-name/URL]");
Sample2.php
<?
ob_start();
?>
<html>
<body>
<?
header("location : Sample3.php"); // กระโดดไปยัง Sample3.php หรือจะใช้ URL header("Location : http://www.xxx.xx");
?>
</body>
</html>
- Require เป็นการเรียกใช้งานไฟล์อื่น เหมือนกับ Include แต่ไม่สามารถเรียกใช้งานไฟล์ที่ทำงานเป็นแบบ Loop ได้เหมือน Include นิยมนำมาใช้เกียวกับ การประกาศที่ ที่สามารถเรียกใช้งานได้ทุก ๆ ไฟล์ เช่น การติดต่อฐานข้อมูล ซึ่งเราจะได้เรียนรู้ในหัวข้อต่อไปครับ
รูปแบบ
require("files-name");
Sample3.php
<?
ob_start();
?>
<html>
<body>
<?
require("Sample4.php");
?>
</body>
</html>
ฟังก์ชั่นเหล่านี้จะมีประโยชน์ในทางคณิตศาสตร์ ซึ่งบางครั้งก้จำเป็นต้องใช้ครับ รู้ใว้ก็ว่าใส่บาแบกหามครับ
ฟังก์ชั่น |
จุดมุ่งหมาย ความหมาย |
max() |
ต้องการหาค่าสูงสุด |
min() |
ต้องการหาค่าต่ำสุด |
number_format() |
กำหนดรูปแบบการแสดงผลตัวเลขหลักพันโดยมีเครื่องหมาย (,) ขั้น |
OctDec() |
แปลงเลขฐานแปดเป็นฐานสิบ |
pi() |
หาค่าคงที่ของ pi |
pow() |
หาค่าของเลขยกกำลัง |
rad2deg() |
แปลงค่าเรเดียนเป็นองศา |
rand() |
สร้างตัวเลขแบบสุม |
Decbin() |
แปลงเลขฐานสิบเป็นฐานสอง |
DecHex() |
แปลงเลขฐานสิบเป็นฐานสิบหก |
DecOct() |
แปลงเลขฐานสิบเป็นฐานแปด |
deg2rad() |
มุมองศาเป็นเรเดียน |
Exp() |
หาค่ายกกำลังของ e |
getrandmax() |
ค่าสูงสุดที่ได้จากการสุ่มตัวเลข |
HexDec() |
แปลงเลขฐานสิบหกเป้นฐานสิบ |
Log() |
หาค่า log ฐานธรรมชาติ |
Log10() |
หาค่า log ฐาน 10 |
Cos() |
หาค่าของ Cosine |
BinDec() |
แปลงเลขฐานสองเป็นฐานสิบ |
Atan() |
หาค่า tan |
Asin() |
หาค่า sine |
Acos() |
หาค่า arc cosine |
Abs() |
เมื่องต้องการหาค่าสัมบูรณ์ของจำนวนจริง |
รูปแบบการใช้งาน
Function(ค่าที่ต้องการหา)
เช่น
max(2,5,9,1,5,3,4)
Log(5)
Asin(0.5)
deg2rad(60)
DecBin(256)
Sample1.php
<?
echo "<br>ทดสอบหาค่า max(2,5,9,1,5,3,4) = ".max(2,5,9,1,5,3,4);
echo "<br>ทดสอบหาค่า log(5) = ".log(5);
echo "<br>ทดสอบหาค่า Asin(0.5) =".Asin(0.5);
echo "<br>ทดสอบหาค่า deg2rad(60) = ".deg2rad(60);
echo "<br>ทดสอบหาค่า DecBin(256) = ".DecBin(256);
?>
Out Put

Sample2.php แปลงค่าตัวเลขให้เป้นจำนวนเต็ม
<?
$num = 32550.256;
settype($num,"integer");
echo "แปลงค่าจำนวนเเต็มจาก 32550.256 = $num<br>\n";
?>
Out Put
Sample3.php การแสดงตัวอักษรที่ละตัวอักษร
<?
$text = "Werachai Nukitram";
echo $text{0}, "<br>";
echo $text{1}, "<br>";
echo $text{2}, "<br>";
echo $text{3}, "<br>";
echo $text{4}, "<br>";
echo $text{5}, "<br>";
echo $text{6}, "<br>";
echo $text{7}, "<br>";
echo $text{8}, "<br>";
echo $text{9}, "<br>";
echo $text{10}, "<br>";
echo $text{11}, "<br>";
?>
Out Put

Sample4.php ตรวจสอบค่าในตัวแปร ว่าเป็น Integer String double
<?
$var1 = 125.22;
echo gettype($var1) . "<br>";
$var2 = 500;
echo gettype($var2) . "<br>";
$var3 = "ทดสอบ";
echo gettype($var3) . "<br>";
?>
Out Put

TOP |