public function read($key, &$ttl_left = -1)
{
if (empty($key)) {
$this->ReportError('empty keys are not allowed', __LINE__);
return false;
}
$this->readmemory();
if (empty($this->mem)) {
return false;
}
if (is_array($key)) {
$keys = array();
$ttl_left = array();
foreach ($key as $ki) {
$ki = (string) $ki;
if (!isset($this->mem[self::map_keys][$ki])) {
continue;
}
$ttl_left[$ki] = $this->get_key_ttl($ki, $this->mem);
if ($ttl_left[$ki] <= 0) {
continue;
}
$keys[$ki] = $this->mem[self::map_keys][$ki];
if (is_numeric($keys[$ki])) {
if (intval($keys[$ki]) == $keys[$ki]) {
$keys[$ki] = intval($keys[$ki]);
} else {
if (floatval($keys[$ki]) == $keys[$ki]) {
$keys[$ki] = floatval($keys[$ki]);
}
}
}
}
return $keys;
} else {
$key = (string) $key;
$r = $this->mem[self::map_keys][$key];
$ttl_left = $this->get_key_ttl($key, $this->mem);
if ($ttl_left <= 0) {
$r = NULL;
} else {
if (is_numeric($r)) {
if (intval($r) == $r) {
$r = intval($r);
} else {
if (floatval($r) == $r) {
$r = floatval($r);
}
}
}
}
return $r;
}
}