ล่าสุดผมเขียนโปรแกรมหาเลขบัตรประจำตัวประชาชนหลักสุดท้ายด้วย JS พร้อมใช้งานเลย เข้าไปใช้กันได้ที่นี่เลยครับ https://spicydog.gitlab.io/thai-national-id-checker/
รอบนี้มาเขียนเลขฟังก์ชั่นสำหรับตรวจเลขบัตรประจำตัวประชาชนบน PHP อีกครั้ง
เนื่องด้วยหลังๆ มานี่ฝึกโดยใช้ map มากขึ้น ก็เลยลองเขียนใหม่แบบรวบๆ ดู ก็ได้หน้าตาประมาณนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/** * Validate Thai national ID * @param string $nationalId * @link https://th.wikipedia.org/wiki/เลขประจำตัวประชาชนไทย * @return bool */ public function isValidNationalId(string $nationalId) { if (strlen($nationalId) === 13) { $digits = str_split($nationalId); $lastDigit = array_pop($digits); $sum = array_sum(array_map(function($d, $k) { return ($k+2) * $d; }, array_reverse($digits), array_keys($digits))); return $lastDigit === strval((11 - $sum % 11) % 10); } return false; } |