我想输入的数字是实际功率输出的数字
如212
为200
+ 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);
过程解释道:
- 存储字符串长度
- 遍历被分割成字符数组的字符串
- 处理当前数字:将其乘以
10^<number of zeroes>
,同时递减 值 - 将当前处理的数字存储到结果数组
- 使用
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