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

时间:2013-10-10 19:39:29

标签: 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[] = $result3;
for($i=0;$i<sizeof($duracao_afunda_eleva);$i++)
{
    $duracao_afunda_eleva1[]=settype($duracao_afunda_eleva[$i],"float");
}

当我致电var_dump($duracao_afunda_eleva1)时,会显示以下内容:

array(3) { 
    [0]=> float(1) 
    [1]=> float(1) 
    [2]=> float(1) 
}

当我致电var_dump($duracao_afunda_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"
    } 
} 

如何将数组值从字符串更改为浮点数?

3 个答案:

答案 0 :(得分:1)

我从var_dump($duracao_afunda_eleva)看到 - $duracao_afunda_eleva是一个多维数组。因此,如果你想要对数组值进行类型转换,你应该使用数组值而不是数组本身,你的代码应该是(感谢@Barmar):

for($i=0; $i<sizeof($duracao_afunda_eleva); $i++) {
    $duracao_afunda_eleva1[] = floatval($duracao_afunda_eleva[$i][0]);
}

答案 1 :(得分:0)

$float = (float) "1.234";

演示:http://codepad.viper-7.com/I6wsAl

答案 2 :(得分:-1)

更改

$duracao_afunda_eleva1[]=settype($duracao_afunda_eleva[$i],"float");

$duracao_afunda_eleva1[]=floatval($duracao_afunda_eleva[$i]);