Feb 22, 2011
Tuesday, February 22, 2011

อาร์เรย์ (Array) ใน AutoIt :1

      อาร์เรย์ (Array : บางคนอ่านอะเรย์) คือ ตัวแปรชุดซึ่งประกอบด้วยตัวแปรที่เป็นสมาชิกเรียงลำดับกัน โดยอาศัยหมายเลขลำดับ (index) สำหรับการเรียกใช้งาน วิธีประกาศอาร์เรย์ใน AutoIt จะทำคล้ายประกาศตัวแปรทั่วไป คือพิมพ์ชื่ออาร์เรย์ที่ต้องการสร้างแล้วพิมพ์กำหนดจำนวนสมาชิกที่ต้องการในวงเล็บ [ ] เพื่อระบุขนาดของสมาชิกในอาร์เรย์ต่อท้ายชื่อ เช่น $pssix[3] จะหมายถึงการประกาศสร้างอาร์เรย์ชื่อ pssix ที่มีสมาชิกภายในอาร์เรย์จำนวน 3 หน่วย (elements) สมาชิกทั้ง 3 หน่วยนี้จะมีค่าเทียบเท่ากับตัวแปร 3 ตัวที่สามารถนำไปรับค่าอะไรก็ได้ 3 ค่านั่นเอง

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

     เหตุที่กล่าวแบบนี้ก็เนื่องมาจากเหตุผล 3 ประการคือ

    1. คำสั่งส่วนใหญ่ที่ใช้ใน AutoIt จะแสดงผลลัพธ์ออกมาเป็นค่าอาร์เรย์ เช่น PixelSearch ก็จะคืนค่าสีค้นหาได้มาเป็นอาร์เรย์ 2 หน่วย (เป็นตัวเลขพิกัด x , y) คำสั่งอื่นก็จะมีการคือค่าผลลัพธ์ออกมาในทำนองนี้ด้วยเช่นกัน แล้วแต่ว่าคำสั่งนั้นมีหน้าที่อะไร

   2.  รูปแบบการทำงานของสคริปต์ทั่วไปใน AutoIt เอื้อต่อการใช้งานลูป ซึ่งต้องอาศํยข้อมูลในอาร์เรย์เป็นเครื่องมือช่วยในการทำงาน เช่น คุณดึงข้อมูลลิงก์ออกมาจากหน้าเว็บจำนวนมาก แล้วต้องการตรวจหาลิงก์ที่กำหนด ก็ต้องใช้ลูปในการดึงเอาข้อมูลที่เก็บไว้ในอาร์เรย์ออกมาตรวจสอบ ในผู้ที่ศึกษาการเขียนสคริปต์ AutoIt ใหม่ๆ มักจะมีปัญหาในการเขียนสคริปต์ที่ไม่ได้ซับซ้อนมาก แต่เขียนได้ยาวเป็นกิโล ทั้งๆ ที่สามารถใช้ลูปกับอาร์เรย์ลดการเขียนคำสั่งลงเพียงแค่ไม่กี่บรรทัด

   3. ด้วยความที่เป็นภาษาสคริปต์ รูปแบบการทำงานตามคำสั่งของ AutoIt จะเป็นไปในลักษณะประมวลผลเรียงบรรทัดจากบนลงล่าง ความยาวของแถวสคริปต์จึงมีผลต่อความเร็วในการประมวลผล เช่น คุณต้องการนำข้อมูล 100 ค่า มาประมวลผลโดยเก็บเอาไว้ในตัวแปร หากเขียนตามปกติสคริปต์ต้องเสียเวลาเขียนคำสั่งต่างๆ ที่ต้องเขียนซ้ำๆ กันไปพร้อมกับตัวแปรทั้ง 100 ตัว การทำแบบนี้ ไม่ต่างจากการทำงานกรรมกรในการเขียนโปรแกรม ทั้งต้องอาศัยแรงงาน เวลา และเกิดความผิดพลาดได้ง่ายๆ ลองนึกถึงเวลาแก้ไขสคริปต์ที่ต้องเลื่อนสโครลบาร์ใน SciTE ขึ้นลง เพื่อไปปรับเปลี่ยนสคริปต์ที่ทำงานกับตัวแปรทั้ง 100 ตัว คงต้องปวดหัวไม่น้อย หากใช้อาร์เรย์จะช่วยลดเวลาการเขียนสคริปต์ที่ต้องจัดการกับตัวแปรจำนวนมาก รวมถึงช่วยให้การประมวลผลโปรแกรมทำงานได้เร็วและช่วยลดปัญหาความผิดพลาดที่อาจเกิดขึ้นได้

มิติของอาร์เรย์ใน AutoIt
    เพื่อให้เข้าใจรูปแบการการจัดเก็บข้อมูลแบบอาเรย์มากยิ่งขึ้น คุณต้องดูรูปด้านล่างนี้ ข้อมูลดังกล่าวเกิดจากการเก็บข้อมูลอาร์เรย์เพียงตัวเดียว  ซึ่งเก็บแบบ 1 มิติ โดยสร้างจากการประกาศ $pssix[3] ข้อมูลแต่ละแถว ก็คือข้อมูลที่ได้จากหน่วยข้อมูลในอาร์เรย์นั่นเอง ตามปกติใน AutoIt มักพบการใช้อาร์เรย์แบบนี้เป็นจำนวนมาก การเขียนสคริปต์ทั่วไป เราก็มักจะใช้อาร์เรย์แบบ 1 มิติช่วยในการเก็บข้อมูลกัน


รูปแสดงการจัดเก็บข้อมูลแบบอาร์เรย์ 1 มิติ

     คุณจะเห็นมีคำว่า อาร์เรย์ 1 มิติ อาจสงสัยว่ามีอาร์เรย์มากกว่านี้หรือเปล่า แน่นอนว่ายังมีอาร์เรย์ที่มากกว่า 1 มิติด้วย วิธีสร้าง Array แบบ 2 มิติ ทำได้โดยการเพิ่มวงเล็บอีกอันหนึ่ง เช่น $pssix[6][2] ก็จะได้อาร์เรย์แบบ 2 มิติที่เก็บข้อมูลดังรูปด้านล่างนี้ ความซับซ้อนของอาเรย์แบบ 2 มิติ ช่วยได้อย่างมากกับการจัดเก็บข้อมูลจำนวนมาก และแทบจะนำมาใช้เก็บข้อมูลได้ทุกประเภทของโปรแกรมที่สร้างขึ้นด้วย AutoIt ตัวอย่างเช่น โปรแกรม PSsix Auto Comment Hi5 ซึ่งแจกให้ใช้ฟรีในบล็อกนี้ ผมก็ใช้อาร์เรย์แบบ 2 มิติจัดการกับข้อมูลของรายชื่อเพื่อนใน Hi5 ซึ่งบางคนมีเป็นพันหรือเป็นหมื่น (เป็นแสนก็มี) สำหรับความแตกต่างระหว่างอาร์เรย์ 1 มิติ กับอาร์เรย์ 2 มิติ ก็สังเกตได้จากจำนวนคอมลัมน์ที่เพิ่มขึ้นมานั่นเอง


สรุปเปรียบเทียบระหว่างอาร์เรย์ 1 มิติ และ อาร์เรย์ 2 มิติ

อาร์เรย์แบบ 1 มิติ
จะมีคอลัมน์เดียวเท่านั้น ตัวเลขสมาชิกจะเป็นตัวบ่งบอกถึงจำนวนแถวข้อมูลในแนวตั้ง

อาร์เรย์แบบ 2 มิติ
จะมีคอลัมน์เพิ่มขึ้นมาตั้งแต่ 2 คอลัมน์ขึ้นไป โดยตัวเลขสมาชิกในวงเล็บที่ 2 จะหมายถึงจำนวนคอลัมน์ที่เพิ่มขึ้นมา

รูปแสดงการจัดเก็บข้อมูลแบบอาร์เรย์ 2 มิติ

     ต่อไปถ้าจะทำอาเรย์แบบ 3 มิติก็จะทำได้ด้วยการเพิ่มวงเล็บอีกอันหนึ่ง เช่น  $pssix[6][2][3] ง่ายใช่ไหมครับ แต่ส่วนที่ยากนั้นไม่ใช่วิธีการสร้างครับ คุณลองดูรูปด้านล่างนี้ ใช่อาร์เรย์แบบ 3 มิติตามแบบที่คุณคิดหรือไม่




    คำตอบคือ รูปแสดงการจัดเก็บข้อมูลอาร์เรย์ด้านบนนี้ ไม่ใช่อาร์เรย์แบบ 3 มิติ ยังคงเป็นอาร์เรย์แบบ 2 มิติอยู่เช่นเดิม รูปตารางข้อมูลเกิดจากการสร้างโดยประกาศตัวอาร์เรย์เป็น $pssix[6][3]  เท่านั้น (6 แถวตั้ง และ 3 คอลัมน์แนวนอน)
    แล้วรูปแสดงตัวอย่างของอาร์เรย์แบบ 3 มิติเป็นเช่นไร บางท่านหลังอ่านบทความตอนนี้จบใจร้อนอาจจะเปิด google หาดูรูปอาร์เรย์แบบ 3 มิติ ก็จะพบว่ามีการสร้างรูปภาพเพื่ออธิบายหลายรูปแบบด้วยกัน การหารูปดูอาจจะช่วยให้คุณเข้าใจได้ส่วนหนึ่ง แต่บางครั้งก็ส่งผลร้ายพ่วงมาด้วย เพราะหากคุณรับแนวคิดจากรูปอาร์เรย์ 3 มิติ โดยยังขาดความเข้าใจอย่างถ่องแท้เรื่องมิติของอาร์เรย์ เมื่อศึกษาอาร์เรย์ที่มากกว่า 3 มิติก็จะนึกภาพไม่ออก (ยังมีอาร์เรย์ 4 มิติ 5 มิติ 6 มิติ… ฯลฯ)
    เนื่องจากเราอยู่ในโลกซึ่งคุ้นเคยกับวัตถุ 3 มิติอันมีระนาบกว้าง ยาว ลึก(หนา) การใช้ภาพอธิบายอาร์เรย์เพื่อเชื่อมโยงไปยังโลกแห่งวัตถุโดยปราศจากความเข้าใจหลักการที่ถูกต้องอาจทำให้เกิดความสับสน ดังนั้นผมจะไม่แสดงรูปอาเรย์แบบ 3 มิติให้ดูในตอนนี้ เพราะในบทต่อๆ ไป หลังจากอธิบายการใช้งานอาร์เรย์แบบ 1 และ 2 มิติเสร็จแล้ว ผมจะอธิบายแนวคิดของอาร์เรย์แบบ 3 มิติ และมิติที่มากเกินนั้นไปอีก เพื่อให้เกิดความเข้าใจรวบยอดไปเลย สำหรับในบทนี้เราจะเน้นเรื่องอาร์เรย์ 1 มิติกันครับ

การประกาศและใส่ข้อมูลอาร์เรย์ 1 มิติใน AutoIt
     คุณสามารถประกาศสร้างอาร์เรย์โดยใช้คำสั่ง Dim เช่น

Dim $pssix[3] ;สร้างอาร์เรย์ชื่อ pssix มีสมาชิก 3 หน่วยว่างๆ

    การใส่ข้อมูลเข้าไปในอาร์เรย์ทำได้หลายวิธีดังนี้

1. ใส่ไปในตอนที่ประกาศ ต้องใช้เครื่องหมายวงเล็บ [ ] ครอบข้อมูลเอาไว้ และใช้คอมม่า , คั่น เพื่อกำหนดข้อมูลของสมาชิกแต่ละหน่วยเอาไว้ โดยข้อมูลจะเรียงลำดับจากซ้ายไปขวา เช่น

Dim $pssix[3] = [1,2,3] ;ใส่ข้อมูลให้กับสมาชิกในอาร์เรย์ทั้ง 3 หน่วย

การใส่นั้นไม่จำเป็นต้องใส่ข้อมูลเข้าไปหมดจนครบสมาชิกทุกตัวใส่เข้าไปแค่เริ่มต้นก็ได้ เช่น

Dim $pssix[3] = [1,2] ;ใส่ข้อมูลเฉพาะหน่วยที่ 1 และ 2

หรือใส่แบบข้ามก็ได้เช่น

Dim $pssix[3] = [1,””,3] ;ใส่ข้อมูลเฉพาะหน่วยที่ 1 และ 3

2. ใส่ในขณะเขียนสคริปต์ ทำได้เหมือนกับการใส่ข้อมูลเข้าไปในตัวแปรปกติเพียงแต่ต้องระบุลำดับของสมาชิกในอาร์เรย์ที่ต้องการใส่ข้อมูลเพิ่มเข้าไปด้วย อย่างไรก็ตามการระบุต้องคำนึงถึงกฏพื้นฐานในการนับลำดับสมาชิกในอาร์เรย์ด้วยคือ สมาชิกลำดับแรกในอาเรย์คือลำดับที่ 0 เสมอ เช่น

$pssix[0] = "111" ;ใส่ข้อความ 111 เข้าไปในอาร์เรย์ pssix หน่วยที่ 1 (หน่วยแรกสุด)
$pssix[1] = "222" ;ใส่ข้อความ 222 เข้าไปในอาร์เรย์ pssix หน่วยที่ 2
$pssix[2] = "333" ;ใส่ข้อความ 333 เข้าไปในอาร์เรย์ pssix หน่วยที่ 3

    ส่วนวิธีการเรียกใช้นั้นก็ทำแบบเดียวกันคือ ต้องระบุชื่ออาร์เรย์และลำดับสมาชิกที่ต้องการเรียกเอาข้อมูลมาใช้เช่น ต้องการดึงเอาข้อมูลที่อยู่ในสมาชิกลำดับที่ 0 (หน่วยที่1) มาแสดงในกล่องข้อความก็จะเขียนได้ดังนี้

MsgBox(0, "ข้อมูลสมาชิกลำดับที่  1 คือ", $pssix[0])

   สำหรับการดึงเอาข้อมูลหรือใส่ข้อมูลในอาร์เรย์ที่มีข้อมูลจำนวนมากๆ จะไม่นิยมเขียนเรียกโดยระบุเลขลำดับลงไป  โดยทั่วไปมักจะใช้การวนลูปและอาศัยตัวแปรช่วยในการเปลี่ยนเลขลำดับภายในเครื่องหมาย [ ]  เช่น ต้องการใส่ตัวเลขเรียง 1 ถึง 10 เข้าไปในอาร์เรย์ก็จะเขียนได้ดังนี้

Dim $pssix[10]

For $i = 1 To 10
    $pssix[$i - 1] = $i
Next


    ตามตัวอย่างด้านบนนี้จะเห็นว่าผมใช้ตัวแปร $i – 1 (ลบหนึ่ง) เป็นตัวช่วยในการระบุลำดับของสมาชิกอาร์เรย์ที่ต้องการจะใส่ข้อมูลเข้าไป เพราะในตอนต้นของลูปผมกำหนดค่าให้ตัวแปร $i มีค่าเท่ากับ 1 ซึ่งลำดับสมาชิกในอาร์เรย์จะเริ่มที่ 0 จึงต้องใส่เครื่องหมายลบหนึ่งลงไปเมื่อจะใช้งานตัวแปรนี้อ้างอิงกับลำดับในอาร์เรย์ด้วย

    อย่างไรก็การใช้คำสั่งที่ระบุจำนวนสมาชิกในอาร์เรย์เป็นตัวเลขชัดเจน เช่น To 10 อาจจะทำให้เกิดความผิดพลาดขึ้นมาได้ เนื่องจากบางครั้งจำนวนสมาชิกในอาร์เรย์อาจจะไม่แน่นอน หรือมีการเพิ่มลดสมาชิกระหว่างการทำงานของสคริปต์ การนับจำนวนสมาชิกทั้งหมดในอาร์เรย์หลังคำสั่ง To ต้องใช้คำสั่ง UBound เข้าช่วย เช่น

Dim $pssix[10]

For $i = 0 To UBound($pssix)-1
    $pssix[$i] = $i+1
Next


     ตามตัวอย่างด้านบนนี้จะเห็นว่า UBound($pssix)-1 มีลบหนึ่งต่อท้าย เนื่องจากการนับโดยใช้คำสั่ง UBound จะคือค่าจำนวนสมาชิกทั้งหมดของอาร์เรย์ออกมา แต่ลำดับสมาชิกของอาร์เรย์นั้น ลำดับแรกจะเริ่มที่ 0 เสมอ ดังนั้นเลขลำดับสุดท้ายของสมาชิกในอาร์เรย์จะมีค่าน้อยกว่าผลลัพธ์ที่ได้จากคำสั่ง Ubound ลบ 1  เพื่อให้เข้าใจง่ายดูรูปแบบการนับด้านล่างนี้ครับ

สมาชิกอาร์เรย์ลำดับที่ 0 ; UBound จะนับเป็นหน่วยที่ 1
สมาชิกอาร์เรย์ลำดับที่ 1 ; UBound จะนับเป็นหน่วยที่ 2
สมาชิกอาร์เรย์ลำดับที่ 2 ; UBound จะนับเป็นหน่วยที่ 3
สมาชิกอาร์เรย์ลำดับที่ 3 ; UBound จะนับเป็นหน่วยที่ 4
สมาชิกอาร์เรย์ลำดับที่ 4 ; UBound จะนับเป็นหน่วยที่ 5
สมาชิกอาร์เรย์ลำดับที่ 5 ; UBound จะนับเป็นหน่วยที่ 6
สมาชิกอาร์เรย์ลำดับที่ 6 ; UBound จะนับเป็นหน่วยที่ 7
สมาชิกอาร์เรย์ลำดับที่ 7 ; UBound จะนับเป็นหน่วยที่ 8
สมาชิกอาร์เรย์ลำดับที่ 8 ; UBound จะนับเป็นหน่วยที่ 9
สมาชิกอาร์เรย์ลำดับที่ 9 ; UBound จะนับเป็นหน่วยที่ 10

     ค่าที่คืนมาจากคำสั่ง UBound ก็จะได้ 10 เมื่อนำไปเขียนเป็นลูปคำสั่ง เพื่อช่วยในการอ้างอิงลำดับสมาชิกในอาเรย์ก็ต้องใส่ –1 ต่อท้ายคำสั่งนี้เสมอ คุณอาจจะสงสัยว่าเราไม่ต้องใส่ –1 ลงไปได้หรือไม่ เพราะเริ่มต้นลูปที่ตัวแปร $i ก็เริ่มที่ 0 อยู่แล้ว ก็ปล่อยให้ลูปวนไปเรื่อยๆ จนครบไปเลย คำตอบคือไม่ได้ครับ เพราะการอ้างอิงลำดับสมาชิกในอาร์เรย์หากอ้างอิงเกินจำนวนสมาชิกที่มีอยู่จริงจะทำให้เกิด error ขึ้นทันที

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

Dim $pssix[10], $sum

For $i = 0 To UBound($pssix) - 1
    $pssix[$i] = InputBox("ใส่ตัวเลข", "ใส่ตัวเลขลำดับที่ " & $i + 1 & " ลงไป", "")
    $sum += $pssix[$i]
Next


MsgBox(0, "ค่าเฉลี่ยของตัวเลขทั้งหมดคือ", $sum / UBound($pssix))

วิธีล้างและปรับขนาดข้อมูลในอาร์เรย์ของ AutoIt
    การกำหนดสมาชิกของอาเรย์เริ่มต้น รวมถึงการสร้างมิติอาร์เรย์จำนวนมาก ทำให้ใช้พื้นที่หน่วยความจำมากตามไปด้วย ดังนั้นหาไม่ได้ใช้อาเรย์ใดๆ ควรทำการล้างค่าอาร์เรย์ด้วยการแปลงค่าอาร์เรย์ให้กลายเป็นตัวแปรธรรมดาเช่น $pssix[6] ก็แปลงโดยใช้คำสั่ง $pssix = 0 แต่ถ้าต้องการให้รูปแบบอาร์เรย์ยังคงอยู่ เพียงแต่ล้างข้อมูลภายในก็ทำได้ด้วยการประกาศสร้างอาร์เรย์ดังกล่าวซ้ำอีกครั้ง เช่น Dim $pssix[6]

    วิธีการข้างต้นเมื่อทำแล้วข้อมูลเดิมที่บรรจุในอาร์เรย์จะหายไปหมด ถ้าต้องการคงข้อมูลบางส่วนเอาไว้ควรใช้คำสั่ง ReDim เพื่อปรับขนาดสมาชิกในอาร์เรย์ เช่น ReDim $pssix[6] ด้วยคำสั่งนี้หากสมาชิกเดิมมีอยู่ 10 สมาชิกในลำดับที่ 7 –10 ก็จะถูกลบทิ้งไปทันที ขณะเดียวกันหากคุณเปลี่ยนคำสั่งเป็น reDim $pssix[20] สมาชิกในอาร์เรย์ก็จะเพิ่มเป็น 20 หน่วยทันที

     วิธีการล้างและปรับขนาดสมาชิกในอาร์เรย์ไม่สามารถปรับเปลี่ยนข้อมูลที่มีอยู่ให้เปลี่ยนไปได้ สำหรับวิธีการเปลี่ยนแปลงข้อมูลเดิมนั้นต้องอาศัยลูป For ในการทำ เช่น อาร์เรย์ $pssix[6] เก็บข้อมูลเป็นตัวเลขเอาไว้ คุณต้องการเปลี่ยนให้ข้อมูลในสมาชิกทุกหน่วยเก็บตัวเลข 0 ก็เขียนคำสั่งได้ดังนี้

For $i = 0 to UBound($pssix)-1
$pssix[$i] = 0
Next


ไม่เข้าใจอาร์เรย์
     หากคุณอ่านเรื่องอาร์เรย์มาตั้งแต่ต้นจนแล้วยังไม่สามารถเข้าใจอาร์เรย์ วิธีการทำงานของมัน ผมยังมีอีกวิธีหนึ่งที่อาจช่วยได้ ลองดูโค้ดคำสั่งด้านล่างนี้

Dim $pssix[5] ;สร้างอาร์เรย์ที่มีสมาชิก 5 หน่วย $a =100 ; สร้างตัวแปร $a ใส่ค่า 100 ลงไป

For $i = 0 to 4 ;วนลูป เริ่มตั้งแต่ 0 ถึง 4
$pssix[$i] = $a +$i ;นำตัวแปร $a คือ 100 มาบวก ตัวแปร $i ซึ่งจะเปลี่ยนค่าไปตามจำนวนลูป
Next ;จบการวนลูป

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

For $i = 0 to 4 แยกออกเป็น 5 รอบการวนลูป โดยแต่ละรอบตัวแปร $i จะมีค่าเพิ่มขึ้นทีละ 1 โดยเริ่ม 0 ถึง 4

รอบที่ 1 ตัวแปร $i จะมีค่าเท่ากับ 0 ส่วนตัวแปร $a มีค่าเท่ากับ 100  เมื่อนำเอาค่าตัวแปรทั้งสองมาบวกกันแล้ว ก็ใส่ข้อมูลลงไปในอาร์เรย์ลำดับที่ 0
$pssix[0] = 100 + 0

รอบที่ 2 ตัวแปร $i จะมีค่าเท่ากับ 1 ส่วนตัวแปร $a มีค่าเท่ากับ 100   เมื่อนำเอาค่าตัวแปรทั้งสองมาบวกกันแล้ว ก็ใส่ข้อมูลลงไปในอาร์เรย์ลำดับที่ 1
$pssix[1] = 100 + 1

รอบที่ 3 ตัวแปร $i จะมีค่าเท่ากับ 2 ส่วนตัวแปร $a มีค่าเท่ากับ 100   เมื่อนำเอาค่าตัวแปรทั้งสองมาบวกกันแล้ว ก็ใส่ข้อมูลลงไปในอาร์เรย์ลำดับที่ 2
$pssix[2] = 100 + 2

รอบที่ 4 ตัวแปร $i จะมีค่าเท่ากับ 3 ส่วนตัวแปร $a มีค่าเท่ากับ 100   เมื่อนำเอาค่าตัวแปรทั้งสองมาบวกกันแล้ว ก็ใส่ข้อมูลลงไปในอาร์เรย์ลำดับที่ 3
 $pssix[3] = 100 + 3

รอบที่ 5 ตัวแปร $i จะมีค่าเท่ากับ 4 ส่วนตัวแปร $a มีค่าเท่ากับ 100   เมื่อนำเอาค่าตัวแปรทั้งสองมาบวกกันแล้ว ก็ใส่ข้อมูลลงไปในอาร์เรย์ลำดับที่ 4
$pssix[4] = 100 + 4

เมื่อสิ้นสุดลูปข้อมูลในอาร์เรย์ก็จะมีผลลัพธ์ดังรูปด้านล่างนี้



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

###จบแล้วครับ###

0 comments:

Post a Comment

    ส่วนนี้สำหรับแสดงความคิดเห็นทั่วไป สอบถามปัญหาตั้งถามได้ที่ฟอรั่ม


>>> [โปรดอ่าน] เนื่องจาก บทความการใช้งานบางโปรแกรมได้โฟสไปนานแล้ว
โปรแกรมอาจมีการอัปเดท วิธีการใช้งาน อาจใช้ไม่ได้ หรือมีวิธีที่ง่ายกว่าในเวอร์ชั่นใหม่
หากคุณพบว่าวิธีการใช้งานไม่ตรงกับบทความในบล็อกนี้ สามารถแนะนำเพิ่มเติมได้ครับ