可以在PHP中更改数组值的类型吗?
我正在从MySQL表中检索数据。这些数据是字符串值,我更喜欢使用浮点数。以下是我正在做的:可以在PHP中更改数组值的类型吗?,php,mysql,arrays,string,floating-point,Php,Mysql,Arrays,String,Floating Point,我正在从MySQL表中检索数据。这些数据是字符串值,我更喜欢使用浮点数。以下是我正在做的: $array_duracao = $con->prepare("SELECT SUM(dt)/0.01666667 AS mysum FROM afunda_eleva"); $array_duracao->execute(); $result3 = $array_duracao->fetch(PDO::FETCH_NUM); $duracao_afunda_eleva[] = $res
$array_duracao = $con->prepare("SELECT SUM(dt)/0.01666667 AS mysum FROM afunda_eleva");
$array_duracao->execute();
$result3 = $array_duracao->fetch(PDO::FETCH_NUM);
$duracao_afunda_eleva[] = $result3;
for($i=0;$i<sizeof($duracao_afunda_eleva);$i++)
{
$duracao_afunda_eleva1[]=settype($duracao_afunda_eleva[$i],"float");
}
当我调用var\u dump($duracao\u afunda\u eleva)
时,它会显示以下内容:
array(3) {
[0]=> array(1) {
[0]=> string(9) "3.6599993"
}
[1]=> array(1) {
[0]=> string(9) "7.0199986"
}
[2]=> array(1) {
[0]=> string(9) "1.3799997"
}
}
如何将数组值从字符串更改为浮点数
$float = (float) "1.234";
演示:更改
$duracao_afunda_eleva1[]=settype($duracao_afunda_eleva[$i],"float");
到
正如我从
var\u dump($duracao\u afunda\u eleva)
-$duracao\u afunda\u eleva
中看到的,它是一个多维数组。因此,如果您想对值进行类型转换,您应该使用数组值而不是数组本身,您的代码应该是(感谢@Barmar):
for($i=0;$i阅读settype
的文档,尤其是返回值部分。尝试从$duracao\u afunda\u elevata[$i]
访问0
数组键:$duracao\u afunda\u elevata[]=settype($duracao\u afunda\u elevata[$i][0],“float”)
在PHP中通常不需要强制类型。在数学表达式中使用字符串时,它会自动将字符串转换为数字。如果字符串有小数点,它会将字符串转换为浮点数。另一个问题是,您将$duracao_afunda_eleva
视为一维数组,但它是二维数组。字符串在s中第二维度。它是二维的,因为$duracao\u afunda\u elevata1[]=…
应该是$duracao\u afunda\u elevata=…
因为结果已经是一个数组了。实际上有一个类型?duracao\u afunda\u elevata和duracao\u afunda\u elevata应该是同一个变量吗?一个末尾有一个1
,另一个没有。哦,你正在尝试将数组转换为浮点。你的逻辑有点中断。this:$duracao_afunda_eleva[]=$result3;
应该是:$duracao\u afunda\u eleva=$result3;
不是真的,Hamza Kubba,因为我正在填充数组,它实际上在一个循环中。但是我刚刚看到我在代码中的一些错误,返回了一个不需要的数组维度。我会看看发生了什么,所以我会尝试答案。无论如何,谢谢。是的,有一些错误奇怪,这个数组不应该是多维的,我会看看发生了什么,然后试着得到我需要的。无论如何,谢谢!
$duracao_afunda_eleva1[]=settype($duracao_afunda_eleva[$i],"float");
$duracao_afunda_eleva1[]=floatval($duracao_afunda_eleva[$i]);
for($i=0; $i<sizeof($duracao_afunda_eleva); $i++) {
$duracao_afunda_eleva1[] = floatval($duracao_afunda_eleva[$i][0]);
}