Определение размера переменной, в байтах

GrayMaster

Новичок
Определение размера переменной, в байтах

Подскажите как определить размер переменной в памяти в байтах. В данном случае - размер массива.
Спасибо.
 

WP

^_^
Либо через разность показаний memory_get_usage() до записи переменной в память и после, либо:
PHP:
function getsize(&$var)
{
 if (is_string($var)) {return strlen($var);}
 elseif (is_array($var))
 {
  $size = 0;
  foreach ($var as $k=>$v) {$size += strlen($k)+getsize($v);}
  return $size;
 }
 else {return 1;}
}
echo getsize($_SERVER);
// 1381
 

vadim

Guest
GrayMaster
php основано вроде на С, можно сравнить сколько там разные типы данных занимают памяти. Примерно можно всегда подсчитать: integer 4 байта, массив из 100 чисел тогда 400 байт.
Но в PHP ещё реализовано type hinting, поэтому сложно сказатьЮ, как они там из типа в тип переводят.
Запусти скрипт через командную строку и посмотри, сколько PHP процесс съедает с этим массивом (ну и system("pause") не забудь :))

-~{}~ 05.05.06 03:08:

обсуждение по данной теме с парой функций (типа того,что WP написал):
http://www.thescripts.com/forum/thread10265.html
 

AnToXa

prodigy-одаренный ребенок
а зачем такое извращение-то?

ну если очень хочется, то к размеру данных собсна лежащих в переменной нужно прибавлять еще sizeof(zval), который в исходниках найдешь, он не очень большой вроде, думаю в пределах 64 байт.
 
Сверху