function sumDigits($n) {
$n = (int)$n;
$sum = 0;
while ($n != 0) {
$sum += $n % 10;
$n = intdiv($n, 10);
}
return $sum;
}
function checkHalvesSumEqual($n) {
$s = strval(abs($n));
$length = strlen($s);
if ($length % 2 != 0) {
echo "The number of digits is NOT even. It cannot be split into two halves: ";
return false;
}
$halfLength = $length / 2;
$firstHalf = substr($s, 0, $halfLength);
$secondHalf = substr($s, $length - $halfLength);
$num1 = intval($firstHalf);
$num2 = intval($secondHalf);
return sumDigits($num1) === sumDigits($num2);
}
$nums = [
123456,
123321,
123123,
123411,
1234321,
12321
];
foreach ($nums as $n) {
echo $n . ": " . (checkHalvesSumEqual($n) ? "true" : "false") . PHP_EOL;
}
/*
run:
123456: false
123321: true
123123: true
123411: true
The number of digits is NOT even. It cannot be split into two halves: 1234321: false
The number of digits is NOT even. It cannot be split into two halves: 12321: false
*/