首页 > 解决方案 > 将一串数字转换为浮点数时..为什么我只得到第一个数字?

问题描述

我知道这个问题之前已经发布过。有人和我有同样的问题,他通过纠正他的编码风格来解决这个问题。没有提供进一步的细节。我正在使用 UTF-8 。我正在使用 Windows 10 。我的代码和评论中的结果如下。任何帮助是极大的赞赏。

$nickp[0] = trim($nickp[0]);
$nickp[1] = trim($nickp[1]);
$nickp[2] = trim($nickp[2]);


echo"<br>";
echo"var dump on nickp";
echo"<br>";
var_dump($nickp);  //      returns array(3) { [0]=> string(459) "15336.50 " [1]=> string(36) "" [2]=> string(0) "" }
echo"<br>";


echo"here is a print r..";
echo"<br>";
print_r($nickp);
echo"<br>";



$nickpf = (float)$nickp;

echo"<br>";
echo"var dump on float nickpf";
echo"<br>";
var_dump($nickpf);  // returns float(1)
echo"<br>";

echo"<br>";
echo"var dump on float nickpf[0]";
echo"<br>";
var_dump($nickpf[0]);  returns NULL
echo"<br>";


echo"just nickpf";
echo"<br>";
echo $nickpf;  // returns 1
echo"<br>";

$nickpf =( $nickpf -13380.50);

echo"just nickpf birth year";
echo"<br>";
echo $nickpf;// returns - 13379.50
echo"<br>";

标签: phpstring

解决方案


这是你想要的

$nickp = ["15336.50", "12312.11", "123123.22"]; // example

$nickp[0] = trim($nickp[0]);
$nickp[1] = trim($nickp[1]);
$nickp[2] = trim($nickp[2]);


echo floatval(preg_replace('/[[:^print:]]/', "", $nickp[0]));

推荐阅读