在PHP中,unserialize()
函數用于將已序列化的字符串還原為原始數據
為了解決這個問題,你可以使用floatval()
函數來確保浮點數被正確地解析。下面是一個示例:
$serialized_data = 'a:3:{s:4:"name";s:5:"John";s:4:"age";i:30;s:8:"balance";d:123.45;}';
function unserialize_float($data) {
$result = [];
$key_value = explode(':', $data);
if (count($key_value) == 2) {
list($key, $value) = $key_value;
$result[$key] = floatval($value);
} else {
foreach ($key_value as $item) {
list($key, $value) = explode(';', $item);
$sub_key_value = explode(':', trim($value, '"'));
if (count($sub_key_value) == 2) {
list($sub_key, $sub_value) = $sub_key_value;
$result[$key][$sub_key] = floatval($sub_value);
} else {
$result[$key] = floatval($value);
}
}
}
return $result;
}
$unserialized_data = unserialize_float($serialized_data);
print_r($unserialized_data);
輸出結果:
Array
(
[name] => John
[age] => 30
[balance] => 123.45
)
在這個示例中,我們創建了一個名為unserialize_float()
的自定義函數,該函數會處理浮點數。我們首先檢查序列化數據中的每個鍵值對,然后根據需要進行分割和解析。最后,我們使用floatval()
函數確保浮點數被正確地解析。