การเขียนโปรแกรมภาษา PHP

            
               

ในกรณีนี้เราต้องการจะใช้ตัวแปร $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