วันจันทร์ที่ 22 สิงหาคม พ.ศ. 2554

ความรู้เกี่ยวกับ Array

ช่วงนี้ที่ทำงานได้ทำเกี่ยวกับ Array อยู่บ่อยๆ (แต่ขอบอกตามตรง ว่าไม่ค่อยชอบเท่าไหร่ …^_^) แต่โดยเนื้องาน บางทีก็เลี่ยงไม่ได้ด้วยซิ พอได้ทำงานกับ Array ก็เลยได้ความรู้เกี่ยวกับการจัดเก็บข้อมูลแบบ Array มาเก็บไว้จ้า
Array คือ ชุดของตัวแปรที่แสดงอยู่ในรูปของลำดับที่ เพื่อใช้สำหรับเก็บค่าข้อมูลที่อยู่ในกลุ่มเดียวกัน
Array 1 มิติ เป็นการจัดเก็บข้อมูลในลักษณะที่เรียงต่อกันไปเรื่อยๆ ดังรูป
 
[0]                                 [1]                                 [2]
MangoPineappleCoconut
  
ที่นี้เรามารู้วิธีการนำเอา Array พวกนี้ไปใช้งานดีกว่า….ซึ่งถ้าเป็นการใช้งาน Array โดยทั่วๆ ไป คิดว่าหลายๆ คนคงเคยเห็นมาบ้างแล้ว เอาแบบแตกต่างมั่ง ฮ่าๆ เป็นการใช้งานการจัดเก็บ Array โดยใช้ข้อมูลจากฐานข้อมูล
 
ซึ่งวิธีการนี้เหมาะสำหรับ ในบางกรณีที่เราไม่ต้องการติดต่อกับฐานข้อมูลทุกครั้ง (ไม่ต้องการ Query ตลอดเวลา) เราก็เลย ทำการ Query ข้อมูลเพียงครั้งเดียว แล้วเก็บค่าของข้อมูลไว้ใน Array แล้วเวลาที่ต้องการใช้งานก็แค่ทำการวนลูป เอาค่าข้อมูลออกมาใช้ วิธีการนี้จะทำให้ไม่เกิด Process มากๆ ในกรณีที่เราต้องการเน้นเครื่องความเร็วสำหรับ Process นั้นๆ จ้า
  การจัดเก็บข้อมูลลง Array                             

 
$sqlSelectESP     = "select * from esp_smtp_tbl where smtp = '$smtp'";                             $querySelectESP = mysql_query($sqlSelectESP) or die ("Can't query sqlCheckESP :".mysql_error());                            $i = 0;                               
                                           
                           While($LineESP = mysql_fetch_assoc($querySelectESP)){                                                                $array_esp[$i] = array("$LineESP['esp'],$LineESP['smtp'],$LineESP['amount']");                                                                                $i ++;                           }           


การนำข้อมูลของ
Array
ออกมาใช้       

foreach($array_esp as $value){                           echo $esp_value    = $value[0];                            echo $smtp_value   = $value[1];                            echo  $amount_value = $value[2];     }     
echo “<pre>”;    echo $array_esp;    echo “</pre>”;    
var_dump($array_esp);
     

โดยหลักการทำงานตามแบบ Array 1 มิติ ข้างต้นเราสามารถนำมาประยุกต์ใช้กับ Array หลายๆ มิติ ได้เหมือนกันค่ะ ไม่ยากเลยใช่มั้ย ^_^
 

วันพฤหัสบดีที่ 4 สิงหาคม พ.ศ. 2554

do while

คำสั่ง do while มีรูปแบบดังนี้
จากรูปแบบของคำสั่ง do while จะเห็นได้ว่าไม่มีการเช็คเงื่อนไขก่อนว่าเป็นจริงหรือเท็จ จะทำคำสั่งต่างๆ ที่ do ก่อน 1 ครั้ง พอจบการทำที่ do แล้วจึงมาเช็คเงื่อนไขที่ while ที่อยู่ด้านล่าง ถ้าเงื่อนไขเป็นจริงก็จะกลับไปทำงานซ้ำอีกครั้งใน do ถ้าเงื่อนไขเป็นเท็จก็จะออกจากลูปไป เห็นไหมครับว่าจริงๆ แล้วคล้ายกับคำสั่ง while ในบท ความที่แล้วไงครับ เพียงแต่ do while นั้นจะทำงานตามคำสั่งที่เราเขียนไว้ก่อนอย่างน้อย 1 ครั้งนั่นเอง ลองมาดูตัวอย่างการใช้งานกันเลยครับ

อธิบายโปรแกรม จากโค้ดตัวอย่างนี้จะทำให้เห็นว่าเหตุการณ์ในลักษณะแบบนี้จะต้องใช้ do while เข้ามาช่วยเนื่องจากจะมีการรับค่าตัวเลขจากผู้ใช้งานก่อนแล้วจึงไป ตรวจสอบค่าต่อไปซึ่งถ้าค่าที่ผู้ใช้กรอกมาเป็น 0 จทำให้สิ้นสุดการทำงานของลูปทันที ลองนึกภาพถ้าเขียนโดยใช้คำสั่ง while อย่างเดียวนั้นจะทำให้ไม่สามารถรับค่าตัวเลข มาก่อนได้เพราะคำสั่ง while จะมีการเช็คค่าก่อนเข้าลูปนั่นเอง
ผมคิดว่าคำสั่งในบทความนี้ก็ยังถือว่ายังไม่ยากเกินไปนะครับสำหรับผู้เริ่มต้น พยายามลองฝึกฝนเขียนดูนะครับ บทความหน้าก็จะเป็นคำสั่งในการวนลูปที่เป็นคำสั่งสุดท้าย แล้วนะครับ จะเป็นคำสั่งอะไรนั้นให้ติดตามไปดูได้ครับ...

for loop

เมื่อเราผ่านบทเรียนการตรวจสอบเงื่อนไขมาแล้ว (ซึ่งผมเห็นว่าเป็นพื้นฐานของการเขียนโปรแกรม และเข้าใจง่ายกว่าการเขียนคำสั่งวนลูป) มาในบทความนี้ผมจะยกตัวอย่างการวนลูปด้วยคำสั่ง for ให้ผู้อ่านได้ศึกษากันครับ

ตัวอย่างเบื้องต้นของการวนลูปด้วย for

01.<?php
02.// การวนลูปเพื่อแสดงตัวเลขตั้งแต่ 1 ถึง 10
03.for ($i = 1; $i <= 10; $i++) {
04.    echo "$i ";
05.}
06.echo "<br />";
07.  
08.// การวนลูปเพื่อแสดงตัวเลขตั้งแต่ 1-10 อีกวิธีหนึ่ง
09.$i = 1;
10.for (; ; ) {
11.    if ($i > 10) {
12.        break;
13.    }
14.    echo "$i ";
15.    $i++;
16.}
17.echo "<br />";
18.  
19.// ตัวอย่างการประยุกต์ใช้งาน (เป็นการวนลูปแบบเพิ่มค่าทีละ 2
20.for ($i = 0; $i <= 30; $i += 2) {
21.    echo "<span style='font-size: {$i}px;'>Example For loop</span><br />";
22.}
23.echo "<br />";
24.  
25.// ตัวอย่างแม่สูตรคูณ
26.for ($i = 2; $i <= 12; $i++) {
27.    for ($j = 1; $j <= 12; $j++) {
28.        echo "$i * $j = " . ($i*$j) . "<br />";
29.    }
30.    echo "<BR>";
31.}
32.?>

while loop

ในบทความนี้จะสอนถึงการวนลูปในรูปแบบคำสั่ง while บ้างนะครับ ซึ่งในคำสั่ง while loop นี้ได้แบ่งออกเป็นคำสั่ง while และคำสั่ง do .. while() แต่คำสั่ง 2 แบบนี้มีความหมายต่างกันเพียงนิดเดียวเท่านั้นครับ (ซึ่งผมได้กล่าวไว้ในหมวดหมู่ Control Structure ของ PHP แล้วครับ) เราเริ่มไปดูตัวอย่างกันเลยครับ

ตัวอย่างการใช้งานคำสั่ง while()

01.<?php
02.// การแสดงตัวเลขตั้งแต่ 1 ถึง 10
03.$i = 1;
04.while ($i <= 10) {
05.    echo "$i ";
06.    $i++;
07.}
08.echo "<br />";
09.  
10.// การแสดงตัวเลขตั้งแต่ 1-10 อีกวิธี
11.$i = 1;
12.while (true) {
13.    if ($i > 10) {
14.        break;
15.    }
16.    echo "$i ";
17.    $i++;
18.}
19.echo "<br />";
20.  
21.// ตัวอย่างการวนลูปเพื่อแสดงแม่สูตรคูณ
22.$i = 2;
23.while ($i <= 12) {
24.    $j = 1;
25.    while($j <= 12) {
26.        echo "$i * $j = " . ($i * $j) . "<br />";
27.        $j++;
28.    }
29.    echo "<br />";
30.    $i++;
31.}
32.echo "<br />";
33.  
34.?>

ตัวอย่างการใช้งานคำสั่ง do ... while()

01.<?php
02.// การแสดงตัวเลขตั้งแต่ 1 ถึง 10
03.$i = 1;
04.do {
05.    echo "$i ";
06.    $i++;
07.} while ($i <= 10);
08.echo "<br />";
09.  
10.// การแสดงตัวเลขตั้งแต่ 1-10 อีกวิธี
11.$i = 1;
12.do {
13.    if ($i > 10) {
14.        break;
15.    }
16.    echo "$i ";
17.    $i++;
18.}while (true);
19.echo "<br />";
20.  
21.// ตัวอย่างการวนลูปเพื่อแสดงแม่สูตรคูณ
22.$i = 2;
23.do {
24.    $j = 1;
25.    do {
26.        echo "$i * $j = " . ($i * $j) . "<br />";
27.        $j++;
28.    } while($j <= 12) ;
29.    echo "<br />";
30.    $i++;
31.} while ($i <= 12) ;
32.echo "<br />";
33.  
34.?>

ข้อแตกต่างของ while() กับ do...while()

01.<?php
02./*
03.สมมติในกรณีที่เราต้องการแสดงสูตรคูณตั้งแต่แม่ 12 - 1
04.แต่ผมได้กำหนดให้ค่า $i = 13
05.ซึ่งเราจะเห็นถึงความแตกต่างได้ตรงนี้ครับ
06.*/
07.  
08.$i = 13;
09.echo "While Loop:<br />";
10.while(($i >= 0) && ($i <=12)) {
11.    $j = 1;
12.    while($j <= 12) {
13.        echo "$i * $j = " . ($i*$j) . "<br />";
14.        $j++;
15.    }
16.    echo "<br />";
17.    $i--;
18.}
19.  
20.$i = 13;
21.echo "Do While Loop:<br />";
22.do {
23.    $j = 1;
24.    do {
25.        echo "$i * $j = " . ($i*$j) . "<br />";
26.        $j++;
27.    } while($j <= 12);
28.    echo "<br />";
29.    $i--;   
30.} while(($i  >= 0) && ($i <= 12));
31.?>

จะเห็นว่าถ้าเราใช้คำสั่ง do ... while() มันจะเข้าทำงานในบล็อกคำสั่งก่อนแล้วค่อยตรวจสอบเงื่อนไข ซึ่งในกรณีนี้เราได้กำหนดให้ค่า $i = 13 ดังนั้นถ้าใช้คำสั่ง while มันจะทำการตรวจสอบเงื่อนไขก่อนว่า $i มีค่าน้อยกว่าหรือ เท่ากับ 12 หรือไม่ (ไม่เท่า) ดังนั้นมันจึงไม่ทำงานในบล็อกคำสั่ง แต่ถ้าเราใช้คำสั่ง do ... while() มันจะทำงานในบล็อกก่อน แล้วค่อยตรวจสอบเงื่อนไขที่กำหนดไว้