php以展开形式数组表示数字



我想输入的数字是实际功率输出的数字

212200 + 10 + 2的输入输出实功率

此方法也称为展开形式。

展开形式的数字,如:

$input = 5362;

我想要这样的输出:

5000,300,60,2

我试图找到许多解决办法,但都失败了。

如果有人理解我的问题,请给我代码示例。

我的代码编码尝试是在python,但我正在寻求一个php解决方案。

user_input = 12345
result = []
for i, num in enumerate(str(user_input)[::-1]): result.append(f'{num} * {10 ** i}')
    print(' + '.join(result[::-1]))

另一种可能更简单的方法是:

$a = 5362;
$length = strlen($a);
foreach (str_split($a) as $item) {
    $result[] = $item * 10 ** --$length;
}
echo implode(',', $result);

过程解释道:

  1. 存储字符串长度
  2. 遍历被分割成字符数组的字符串
  3. 处理当前数字:将其乘以10^<number of zeroes>,同时递减
  4. 将当前处理的数字存储到结果数组
  5. 使用implode将数组元素连接成CSV字符串

演示:https://3v4l.org/BLcde

你可以试试:

$input = 5362;
$array = str_split($input);
krsort($array);
$array = array_map(function($number, $key){
    return str_pad($number, $key + 1, '0');
}, $array, array_keys(array_values($array)));
krsort($array);
print_r(implode(',', $array));

结果:

5000,300,60,2

相关内容

  • 没有找到相关文章

最新更新