สยามเว็บโฮส โฮสติ้งดี ราคาถูก

วัตถุประสงค์การก่อตั้งฯ
ห้องพระ-ชำระจิตใจ
เรื่องสั้น-บทความ
บทกลอน-บทกวี
เกมส์ออนไลน์
ตำหนักเพลงไทยเดิม
เซียมซีเสี่ยงโชค
กระดานสนทนา
ข่าวฝากประชาสัมพันธ์
กระดานซื้อ-ขายสินค้า
ฟรีอีเมล์เนื้อที่ 5 MB
ติดต่อ นายทะเบียน
Add to Favorites

ทั่วโลก www
ชมรมเว็บเพจไทย

Power by Google!
สนับสนุนพื้นที่ Hosting

สยามเว็บโฮสดอทคอม

 


บทความเรื่อง การสร้างเว็บเพจโดยใช้ภาษา PHP โดย เรวัต ศิริโภคาภิรมย์ (Rawat Siripokarpirom)
ชมรมเว็บเพจไทย นำมาเผยแพร่ ภายใต้ลิขสิทธิ์ของ Open Content License หรือ OPL เวอร์ชั่น 1.0

การสร้างเว็บเพจโดยใช้ภาษา PHP ตอนที่ 26

การสร้างฟังก์ชันแบบเรียกตัวเอง (recursive function)

ตัวอย่าง การหาค่าแฟลทอเรียล n!
 
<?
function factorial ($n) {
  if ( ($n == 0) || ($n == 1) )
   return 1;
  else
    return $n*factorial($n-1);
}
echo  factorial(4);

?>

เงื่อนไขก็ใช้ฟังก์ชัน factorial() จากตัวอย่างข้างบน คือ $n จะต้องเป็นตัวแปรที่เก็บค่าที่เป็นเลขจำนวนเต็ม และไม่เป็นลบ ถ้าเราต้องการจะเขียนฟังก์ชันให้มีความปลอดภัยในการใช้งาน เราก็อาจจะเพิ่มเงื่อนไข เพื่อตรวจเช็คดูก่อนว่า ผู้ใช้ผ่านค่าของตัวแปรที่ตรงตามต้องการหรือไม่ เช่น ไม่ผ่านค่าที่เป็นสตริงค์ หรือเป็นเลขทศนิยม หรือค่าที่เป็นลบ เป็นต้น

ตัวอย่าง การค้นหาข้อมูลแบบ Binary Search ในอาร์เรย์ที่มีการเรียงข้อมูลจากน้อยไปมาก
 
<?

function binSearch(&$key,&$array, $left, $right)
{
   $mid = ceil( ($left + $right) / 2 );

   if ($left > $right)
      return -1;
   if ($array[$mid] == $key)
      return $mid;
   else if ($key < $array[$mid])
      return binSearch($key, $array, $left, $mid-1);  // recursive call
   else
      return binSearch($key, $array, $mid+1, $right); // recursive call
}

$num=100;
$key = randInt(0, $num);
for($i=0; $i < $num; $i++) {
  $sorted_array[$i] = $i+1;
}

echo binSearch(13, $sorted_array, 0, $num);

?>

ตัวอย่าง การสร้างสตริงค์แบบสุ่มอีกแบบหนึ่งซึ่งอาจจะนำไปใช้ในการสร้าง one-time password ( OTP)
 
<?

function randomToken($len) {
  srand( date("s") );
  $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  $chars.= "1234567890!@#$%^&*()";
  $ret_str = "";
  $num = strlen($chars);
  for($i=0; $i < $len; $i++) {
    $ret_str.= $chars[rand()%$num];
  }
  return $ret_str;
}

echo randomToken(13)," ";

?>

หมายเหตุ: การกำหนดค่า seed สำหรับฟังก์ชัน srand() นอกจะใช้ date("s") เป็นตัวกำหนดค่าแล้ว เราอาจจะใช้ฟังก์ชันอื่นก็ได้ เช่น srand((double)microtime()*1000000);


ชมรมเว็บเพจไทย ตั้งใจมุ่งมั่น สร้างสรรค์เพื่อมวลสมาชิก



เริ่มนับ 20 พฤศจิกายน 2547 เวลา 24.00 น.
เว็บไซต์แห่งนี้ออกแบบสำหรับจอภาพที่มีความละเอียด 800x600 Pixel และ เปิดชมด้วย IE4.0 ขึ้นไป

ชมรมเว็บเพจไทย เป็นเว็บไซต์ที่จัดทำขึ้นเพื่อเผยแพร่ข่าวสารและสาระความรู้เกี่ยวกับการสร้างเว็บไซต์ ให้แด่สมาชิกและผู้สนใจทั่วไป
โดยไม่หวังผลประโยชน์ทางธุระกิจ [Non Profit Organization] ก่อตั้งเมื่อวันที่ 16 ตุลาคม พ.ศ. 2540
ข้อมูลข่าวสาร บทความ และภาพประกอบ ที่ไม่อ้างถึงเจ้าของลิขสิทธิ์ สามารถนำไปใช้ได้โดยไม่ต้องขออนุญาต [Non Copyright]