因爲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) –