ในวันคืนที่เหงาหงอยและอ้างว้าง ว่างงานจากการตาจ้องหน้าจอมือจิ้มคีย์บอร์ดเพื่อเขียนโปรแกรม ผมมักจะไปเยี่ยมเยือนตามเว็บบอร์ด PHP เพื่อไปดูคำถามที่น่าสนใจแล้วก็ตอบ เป็นงานอดิเรก
ผมว่าการทำอย่างนี้เห็นประโยชน์ชัดๆอยู่ 2 ข้อ
- เป็นการฝึกสมองให้คิดตีโจทย์
- เป็นการช่วยเหลือน้องๆ
เว็บไทยครีเอท http://www.thaicreate.com ผมแวะไปเยี่ยมมาวันก่อน มีน้องคนนึงถามคำถามว่า “คิดไม่ออกครับ ตันครับ รับค่าจาก textbox เป็นเลขจำนวนนึ่ง สมมุติว่า รับมา 521 อยากให้ผลลัพธ์ คือ หลักร้อย = 5, หลัก สิบ = 2 ,หลักหน่วย = 1 อะครับผม”
สำหรับน้องๆเมื่อจะตีโจทย์นี้ ต้องมองไปที่ตัวเลขแล้วสังเกตความพิเศษในตัวมันให้ออก สิ่งหนึ่งที่พิเศษที่มองเห็นก็คือ หลักหน่วยอยู่ท้ายเสมอและถ้าเราระเบิดมันออกมาเป็นอะเรย์ เราก็จะได้ตำแหน่งมันมาด้วยอัตโนมัติ
ทีนี้ลองเอาตัวเลขอีกตัวมาพิจารณา 521,1024 จะเห็นว่าหลักหน่วยของตัวแรกอยู่ตำแหน่ง 3 หลักหน่วยของตัวเลขตัวสองอยู่ที่หลัก 4 มันขึ้นๆลงๆตามขนาดของตัวเลข ถ้าเราพลิกตัวเลขให้กลับหน้ากลับหลัง หลักหน่วยก็จะอยู่ที่ตำแหน่ง 1 เสมอ ไม่ว่าตัวเลขจะยาวขนาดไหนก็ตาม เมื่อได้แนวความคิดคร่าวๆแล้ว จึงลงมือเขียนโค้ด
<?php $int_number = 45780; function become($input) { $arr_out = array( 6=>"หลักล้าน", 5=>"หลักแสน", 4=>"หลักหมื่น", 3=>"หลักพัน", 2=>"หลักร้อย", 1=>"หลักสิบ", 0=>"หลักหน่วย" ); $str_number = (string)$input; $str_number = strrev($str_number); $length = strlen($str_number); for($i=0;$i<$length;$i++) { echo $arr_out[$i]." = ".$str_number[$i]."<br/>"; } } become($int_number); |
ลองเอาไปรันในเครื่องดู ทีนี้สมมติถ้าต้องการให้แสดงผลเป็นหลักหน่วยอยู่ท้ายสุด ก็แค่โยนผลลัพแต่ละตัวเข้าไปในอะเรย์ก่อน แล้วพลิกอะเรย์กลับหน้ากลับหลัง
เรามาดูความรู้เล็กๆน้อยๆที่ได้จากฟังก์ชั่นที่ผมเขียน
(string)$input; |
วิธีการนี้เขาเรียกว่า cast type เป็นการบังคับให้ค่าในตัวแปรเป็นข้อความ เอาวางแหม่งๆไว้หน้าตัวแปรเฉยๆงั้นแหละ
strrev($str_number); |
ฟังก์ชั่น strrev เป็นฟังก์ชั่นมาตรฐานของ PHP ให้สำหรับพลิกตัวอักษรจากข้างหน้าให้อยู่ข้างหลัง จากข้างหลังให้อยู่ข้างหน้า อย่างเช่นคำ hello จะได้เป็น olleh หรือ fuckyou จะได้เป็น uoykcuf
$str_number[$i] |
สำหรับน้องๆแล้ว ตรงนี้ผมว่าน่าสนใจเป็นพิเศษ ถ้าดูจากโค้ดที่ผมเขียน ตัวแปร $str_number มันเป็นแค่ตัวแปรสตริงธรรมดาๆ ไม่ใช่อะเรย์ แต่ผมสามารถใช้มันแบบอะเรย์ได้ นั่นหมายความว่าไง หมายความว่า ตัวแปรอะเรย์นั้นมันมีคุณสมบัติความเป็นอะเรย์อยู่ในตัวเอง ความรู้ตรงนี้เอาไปประยุกต์เขียนโปรแกรมได้มากมาย
ทิ้งท้ายไว้นิดนึงสำหรับผู้ที่จะมีงานอดิเรกเป็นการตอบกระทู้ ท่านอย่าไปคาดหวังกับคำขอบคุณจากเจ้าของกระทู้ เขาอาจจะหายไปเฉยเมื่อได้คำตอบแล้ว ไม่มีการรายงานผลใดๆ ว่าทำได้หรือไม่ได้
เด็กสมัยนี้ไม่รู้มันเป็นส้นตีนอะไรกะอีแค่คำว่าขอบคุณ
sitti says:
19/11/2554 at 19/11/2554
ขอบคุณครับสำหรับบทความนี้มากครับ
ชอบประโยคสุดท้าย “เด็กสมัยนี้ไม่รู้มันเป็นส้นตีนอะไรกะอีแค่คำว่าขอบคุณ” มากๆ คงเป็นเพราะความล้มเหลวด้านการศึกษาของชาติแหละ เน้นให้เก่งให้สำเร็จ โดยไม่สนใจว่า ใครเป็นครูอาจารย์
watchapol says:
05/06/2557 at 05/06/2557
ขอบคุณสำหรับความรู้ครับพี่