- substr: documentation ( source)
- var_dump: documentation ( source)
- join: documentation ( source)
<?php
function getCombinedSum($digits, $sum)
{
if(!is_int($digits) || !is_int($sum) || $digits<1 || $sum<0)
{
throw new InvalidArgumentException('Invalid numeric format');
}
if($sum>9*$digits)
{
throw new LogicException('Sum out of range');
}
if($digits==1)
{
return [$sum];
}
$result = [];
for($digit=0; $digit<10 && $sum-$digit>0; $digit++)
{
$subsum = join('',getCombinedSum($digits-1, $sum-$digit));
for($j=0; $j<$digits; $j++)
{
$result[] = substr($subsum, 0, $j).$digit.substr($subsum, $j);
}
}
return $result;
}
var_dump(getCombinedSum(2, 1));