Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP ผลรวมตัวเลขในตัวเลข (Sum of Digits)

ตัวอย่างโค้ด

<?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

คำอธิบาย

  1. รับ Input เป็น String (เพื่อเข้าถึงแต่ละ Digit ผ่าน Array Access)
  2. Loop ตามความยาว String
  3. $my_num[$i] ให้ Character ตัวที่ i (Auto-convert เป็น Int ตอนบวก)
  4. สะสมใน $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 เร็วกว่าและรองรับเลขใหญ่ได้ดีกว่า