Php 将浮点数分隔为数组
所以我有一个十进制数(5,2),我正试图将它分离成一个数组 所以如果数字是Php 将浮点数分隔为数组,php,arrays,Php,Arrays,所以我有一个十进制数(5,2),我正试图将它分离成一个数组 所以如果数字是 123.45=数组([0]=>1[1]=>2[2]=>3[3]=>4[4]=>5) 23.45=数组([0]=>0[1]=>2[2]=>3[3]=>4[4]=>5) 3.45=数组([0]=>0[1]=>0[2]=>3[3]=>4[4]=>5) 我有一个相当大的代码来做这件事,我想知道是否有人有一个更简单的方法把每个数字放入这个数组,因为我觉得我的是非常复杂的 $number = 123.35; $number_arra
123.45=数组([0]=>1[1]=>2[2]=>3[3]=>4[4]=>5)
23.45=数组([0]=>0[1]=>2[2]=>3[3]=>4[4]=>5)
3.45=数组([0]=>0[1]=>0[2]=>3[3]=>4[4]=>5)
我有一个相当大的代码来做这件事,我想知道是否有人有一个更简单的方法把每个数字放入这个数组,因为我觉得我的是非常复杂的
$number = 123.35;
$number_array = explode(".", $number);
$final_array = array(0);
if(!empty(@(string)$number_array[0][0]) && !empty(@(string)$number_array[0][1]) && !empty(@(string)$number_array[0][2]))
{
$final_array[0] = @(string)$number_array[0][0];
$final_array[1] = @(string)$number_array[0][1];
$final_array[2] = @(string)$number_array[0][2];
}
elseif(!empty(@(string)$number_array[0][0]) && !empty(@(string)$number_array[0][1]) && empty(@(string)$number_array[0][2]))
{
$final_array[0] = 0;
$final_array[1] = @(string)$number_array[0][0];
$final_array[2] = @(string)$number_array[0][1];
}
elseif(!empty(@(string)$number_array[0][0]) && empty(@(string)$number_array[0][1]) && empty(@(string)$number_array[0][2]))
{
$final_array[0] = 0;
$final_array[1] = 0;
$final_array[2] = @(string)$number_array[0][0];
}
else
{
$final_array[0] = 0;
$final_array[1] = 0;
$final_array[2] = 0;
}
empty(@(string)$number_array[1][0]) ? $final_array[3] = 0 : $final_array[3] = @(string)$number_array[1][0];
empty(@(string)$number_array[1][1]) ? $final_array[4] = 0 : $final_array[4] = @(string)$number_array[1][1];
您想看看phps()函数 你试过使用正则表达式吗?这对你来说是最好的。我想这就是你想要的:
list($whole, $decimal) = sscanf($number, '%d.%d');
$result = str_split(sprintf('%03s',$whole) . $decimal);
测试用例:
foreach ([123.45, 23.45, 3.45] as $number) {
list($whole, $decimal) = sscanf($number, '%d.%d');
$result = str_split(sprintf('%03s',$whole).$decimal);
echo implode(', ', $result) . "\n";
}
输出:
1, 2, 3, 4, 5
0, 2, 3, 4, 5
0, 0, 3, 4, 5
这很好,但是需要“0”和我的
最终_数组的大小。在str_拆分更新之前,我需要一个数组(5)使用str_pad($number,5,“0”,str_pad_LEFT),可能不需要对字符串进行转换,但为了清晰起见,我认为拥有它很好。哦,将来不要使用@error suppressor!这太棒了@Jessica!非常感谢你。关于我的问题,唯一令人困惑的是。0必须在数字端。但实际上,小数点的位置正好相反。如果是.3,我需要[3]=3,[4]=0。我想我可以做两次,对了,我唯一尝试过的就是我知道怎么做。如果你有一个例子,我很想看看
1, 2, 3, 4, 5
0, 2, 3, 4, 5
0, 0, 3, 4, 5