因为MySQL的“选择”,选择整形和浮点字符串,我需要每一个反应,我得到(从JS)是在一个正确的数据模型 -PHP - 递归到位替换字符串到数字的时间太长
- 1不是 “1”,
- 53.2不是 “53.2”,
我创建的混合型上工作这种递归函数 - 阵列/对象:
private function cast_number(&$mixed) {
if(is_array($mixed)) {
foreach ($mixed as $key => $val)
if (is_numeric($val))
$mixed[$key] = (double)$val;
else if (is_array($val) || is_object($val))
$mixed[$key] = $this->cast_number($val);
} else if(is_object($mixed)) {
foreach ($mixed as $key => $val)
if (is_numeric($val))
$mixed->$key = (double)$val;
else if (is_array($val) || is_object($val))
$mixed->$key = $this->cast_number($val);
}
return $mixed;
}
非常简单的函数 - 如果是数字,则投影双精度,如果是数组或对象,则递归重复。
这里的一切都已到位。
我有两个问题: - 在数据6MB,即表示为字符串大多都是数字的花0.5秒 - 关于数据的200MB(是的,我需要它,请不要专注于它),它几分钟后(通常秒)失败,说它需要超过4GB的内存..
- 如何改进此功能? (速度,内存)
- 为什么需要这么长时间?甚至json_encode,我会认为这是一个更大的功能花费更少的时间..
你尝试类型杂耍,而不是:'$混合[$关键] = 0 + $ VAL;'? –
@IvanGabriele还没有。我不明白它对速度有何帮助?当然,内存大部分时间都是4个字节而不是8个。我正在尝试 – Amit
您的问题还有另一种解决方案。这是在服务器上更新mysqlnd所以PHP得到正确的数据类型从MySQL ...... [这里的详细说明](http://stackoverflow.com/questions/1197005/how-to-get-numeric-types-from-mysql-使用-PDO) –