Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将浮点数分隔为数组_Php_Arrays - Fatal编程技术网

Php 将浮点数分隔为数组

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

所以我有一个十进制数(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_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