ขณะที่เขียนบทความนี้ กำลังทำงานให้ไมเคิล เว็บไซต์อีคอมเมิร์สส่งสิ่งพิมพ์ไปขายทั่วโลก ประมาณว่าสั่งภาพที่ต้องการทางหน้าเว็บไซต์แล้วทางนี้ก็ปริ้นต์ส่งไปให้

จากการศึกษาค่าจัดส่ง

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

DHL ไม่ค่อยแตกต่างจาก Fedx เงื่อนไขการเขียนโปรแกรมลำบากถ้าไม่มี API ให้ติดต่อ

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

INTERNATIONAL-EMS-RATE

ลองเอาอัตราค่าขนส่งของ 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