Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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_Mysql_Arrays_String_Floating Point - Fatal编程技术网

可以在PHP中更改数组值的类型吗?

可以在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

我正在从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[] = $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]);
}