gpt4 book ai didi

php - 转换为 float 时处理空值

转载 作者:行者123 更新时间:2023-12-03 23:32:18 24 4
gpt4 key购买 nike

我正在使用 Highcharts 进行项目。

一些php文件:

$sql    =   "SELECT unix_timestamp(`datetime`) as `datetime`, `temp_cellule`, `temp_exterieur` FROM `tablebase`";
$result = mysql_query($sql);
$data = array();
while ($row = mysql_fetch_array($result)) {
extract($row);
$datetime += 3600; //GMT+1
$datetime *= 1000; //UNIX_TIMESTAMP to java
$data[] = array((float)$datetime,(float)$temp_cellule);
$data2[]= array((float)$datetime,(float)$temp_exterieur);
}

$array[] = json_encode($data);
$array2[] = json_encode($data2);

使用此代码: $data2[]= array((float)$datetime,(float)$temp_cellule);
我得到了一个很好的格式,但 Highcharts 无法识别值 "null"因为它不是浮点数所以它被转换为 0 :
[[1362133360000,25],[1362136955000,0],[1362140579000,35]

但是,如果我使用: $data[] = array($datetime,$temp_cellule); (没有类型转换 float )由于 ,我得到了“datetime”和“null”的良好格式,但没有得到 temp_cellule 的格式。 "" :
[[1362133360000,"25"],[1362136955000,null],[1362140579000,"35"]]

而且我要:
[[1362133360000,25],[1362136955000,null],[1362140579000,35]]

我怎样才能做到这一点?

最佳答案

您可以通过使用 ternary operator 来做到这一点。 .它将检查条件然后执行第二个参数(在 ?: 之间的内容),否则它将执行第三个参数(在 : 之后的内容)。

$data[] = array((float)$datetime, is_null($temp_cellule) ? null : (float)$temp_cellule);

三元运算符是 if-else then assign 运算符的简写运算符。因为它返回第二个或第三个参数的值。

这与这样写是一样的:
if(is_null($temp_cellule)){
$data[] = array((float)$datetime, null);
} else {
$data[] = array((float)$datetime, (float)$temp_cellule);
}

请注意 根据这种情况在您的代码中出现的次数,您可以使用它创建一个实用程序函数。
function handleFloat($value){
return is_null($value) ? null : (float)$value;
}

然后你就可以写:
$data[] = array((float)$datetime, handleFloat($temp_cellule));

这可能有助于保留您的代码 DRY .

关于php - 转换为 float 时处理空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com