ตัวอย่างโค้ด
<?php
function sum_of_digits($my_num) {
$sum = 0;
for ($i = 0; $i < strlen($my_num); $i++) {
$sum += $my_num[$i];
}
return $sum;
}
$my_num = "65";
echo "The sum of digits is " . sum_of_digits($my_num);
?>
ผลลัพธ์
The sum of digits is 11
คำอธิบาย
- รับ Input เป็น String (เพื่อเข้าถึงแต่ละ Digit ผ่าน Array Access)
- Loop ตามความยาว String
$my_num[$i] ให้ Character ตัวที่ i (Auto-convert เป็น Int ตอนบวก)
- สะสมใน
$sum
วิธี Alternative
1. ใช้ Array Functions
<?php
function sum_digits($num) {
return array_sum(str_split((string)$num));
}
echo sum_digits(65); // 11
?>
2. Mathematical Approach (ไม่ต้อง String)
<?php
function sum_digits_math($num) {
$sum = 0;
while ($num > 0) {
$sum += $num % 10;
$num = (int)($num / 10);
}
return $sum;
}
echo sum_digits_math(65); // 11
?>
ข้อสังเกต
- Input เป็น String "65" ทำงานได้เพราะ PHP Auto-cast '6' + '5' = 6 + 5
- ถ้า Input เป็น Integer ต้อง Cast เป็น String ก่อน หรือใช้ Mathematical Method
- Mathematical Method เร็วกว่าและรองรับเลขใหญ่ได้ดีกว่า