ขณะที่เขียนบทความนี้ กำลังทำงานให้ไมเคิล เว็บไซต์อีคอมเมิร์สส่งสิ่งพิมพ์ไปขายทั่วโลก ประมาณว่าสั่งภาพที่ต้องการทางหน้าเว็บไซต์แล้วทางนี้ก็ปริ้นต์ส่งไปให้
จากการศึกษาค่าจัดส่ง
Fedx มี API ให้เราเขียนติดต่อเพื่อคำณวนค่าจัดส่ง แต่ต้องเป็นสมาชิกและวางเงินประกันในบัญชีหนึ่งแสนบาท ถ้าไม่เป็นสมาชิกจะไม่มี API ให้ใช้ และที่ลำบากก็คือเขามีการจัดเก็บค่าน้ำมันด้วย แต่ละเดือนไม่เท่ากัน ขึ้นอยู่กับราคาน้ำมันตลาดโลก ปรับกันเดือนต่อเดือน
DHL ไม่ค่อยแตกต่างจาก Fedx เงื่อนไขการเขียนโปรแกรมลำบากถ้าไม่มี API ให้ติดต่อ
EMS ของพี่ไทย ง่ายสุดในบรรดาที่เล่ามา อัตราขนส่งจะขึ้นอยู่กับประเทศที่ส่งและน้ำหนัก ไม่มีเรื่องน้ำมันมาเกี่ยวข้อง อาจจะแพงหน่อย แต่เขียนโปรแกรมง่าย ไม่มีเงินประกันใดๆ
ลองเอาอัตราค่าขนส่งของ EMS ระหว่างประเทศไปดูกันเล่นๆ
ชื่อประเทศในไฟล์ Excel จะเป็นตัวใหญ่ทั้งหมด ผมจะต้องเอาอัตราพวกนี้เก็บลงฐานข้อมูลเพื่อคำณวนค่าขนส่งให้ลูกค้าทราบ
ทีนี้ผมขี้เกียจนั่งแปลงชื่อประเทศจากตัวใหญ่ทั้งหมด CHAINA มาเป็นชื่อที่คนใช้กัน Chaina
ผมก็เก็บเป็นตัวใหญ่ทั้งหมดนั่นแหละ ตอนแสดงผลค่อยให้ PHP ช่วยแปลงให้ ฟังก์ชั่นที่ใช้ strtolower และ ucwords
เอา strtolower แปลงให้ชื่อประเทศเป็นตัวเล็กทั้งหมดก่อนแล้วใช้ ucwords แปลงให้ตัวอักษรตัวแรกของคำเป็นตัวใหญ่ ก็จะตรงกับสิ่งต้องการที่คิดไว้
echo ucwords( strtolower( 'CHAINA' ) ) ; |
ผลลัพธ์ที่ได้
Chaina |
ไวยากรณ์
strtolower(string) |
ฟังก์ชั่น strtolower ใช้สำหรับแปลงตัวอักษรทั้งหมดให้เป็นตัวเล็ก
ucwords(string) |
ฟังก์ชั่น ucwordsใช้สำหรับแปลงตัวอักษรตัวแรกของคำเป็นตัวใหญ่
อาจจะมีคนตั้งคำถามว่าแล้วทำไมต้องใช้ strtolower แปลงตัวอักษรทั้งหมดให้เป็นตัวเล็กก่อนแล้วค่อยใช้ฟังก์ชั่น ucwords แปลงให้ตัวอักษรตัวแรกของคำเป็นตัวใหญ่
ก็เพราะว่า ถ้าใช้ฟังก์ชั่น ucwords แปลงคำที่เป็นตัวใหญ่ทั้งหมด มันจะไม่เกิดอะไรขึ้นเลย
echo ucwords( 'CHAINA' ) ; |
ผลลัพธ์ที่ได้
CHAINA |
ได้ข้อสรุปอย่างหนึ่งว่าฟังก์ชั่น ucwords จะมีผลต่ออักษรตัวเล็กเท่านั้น
ทิ้งท้ายหน่อยหนึ่ง มันมีัฟังก์ชั่นชื่อ ucfirst ที่การทำงานจะใกล้เคียงกันกับฟังก์ชั่น ucwords
ucfirst จะแปลงตัวอักษรตัวแรกเป็นตัวใหญ่ ไม่ว่าจะส่งสตริงยาวแค่ไหนเข้าไปแปลง มันจะสนใจตัวอักษรตัวแรกเท่านั้น
echo ucfirst( 'HONG KONG' ) ; |
ผลลัพธ์ที่ได้
Hong kong |
echo ucwords( strtolower('HONG KONG') ) ; |
ผลลัพธ์ที่ได้
Hong Kong |
ท่านน่าจะพอเดาได้นะ ว่าทำไมผมใช้ ucwords ในโปรเจ็กนี้ ไม่เลือกใช้ ucfirst
Leave a Reply