bike trucking

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

ผมว่าการทำอย่างนี้เห็นประโยชน์ชัดๆอยู่ 2 ข้อ

  1. เป็นการฝึกสมองให้คิดตีโจทย์
  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 มันเป็นแค่ตัวแปรสตริงธรรมดาๆ ไม่ใช่อะเรย์ แต่ผมสามารถใช้มันแบบอะเรย์ได้ นั่นหมายความว่าไง หมายความว่า ตัวแปรอะเรย์นั้นมันมีคุณสมบัติความเป็นอะเรย์อยู่ในตัวเอง ความรู้ตรงนี้เอาไปประยุกต์เขียนโปรแกรมได้มากมาย

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

เด็กสมัยนี้ไม่รู้มันเป็นส้นตีนอะไรกะอีแค่คำว่าขอบคุณ