2013-10-10 64 views
-1

我正在从MySQL表中检索数据。这些数据是字符串值,我宁愿使用浮点数字。下面是我在做什么:是否有可能在PHP中更改数组值的类型?

$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" 
    } 
} 

如何我可以将字符串的数组值更改为浮点数吗?

+0

阅读settype'的'文档,尤其是'返回值'部分。 – Barmar

+1

尝试从'$ duracao_afunda_eleva [$ i]':'$ duracao_afunda_eleva1 [] = settype($ duracao_afunda_eleva [$ i] [0],“float”);' –

+1

访问'0'数组键'在PHP中强制类型。当您在数学表达式中使用它们时,它会自动将字符串转换为数字。如果它有一个小数点,它会将它们转换为浮点数。 – Barmar

回答

-1

变化

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

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

同样的结果。 :( – GustavoxD

+0

实际上有一个类型吗?duracao_afunda_eleva1和duracao_afunda_eleva应该是同一个变量吗?一个最后有一个'1',另一个没有。 –

+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]); 
} 
+0

是的,有些奇怪,这个数组不应该是多维我会看看发生了什么,并尝试获得我需要的东西。不管怎么说,还是要谢谢你! – GustavoxD

相关问题