[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Определить размер переменной.
LRCenter
Подскажите как это сделать. Определить нужно именно объем памяти, занимаемой переменной, а не количество символов строки - strlen() не подойдет.

Нужно узнать объем занимаемой памяти вне зависимости от типа переменной(например для массива), кодировки и т.п.

Как? Наверняка есть какая-то функция? Не могу найти ничего похожего.



Спустя 18 минут, 55 секунд (16.11.2011 - 15:32) linker написал(а):
Длина строки в php равно объём занимаемой памяти, ибо strlen() считает не количество символов, а количество байт. Если UTF-8, то mb_strlen().

Спустя 7 минут, 5 секунд (16.11.2011 - 15:39) LRCenter написал(а):
А если это не строка а массив? smile.gif

Спустя 39 минут, 31 секунда (16.11.2011 - 16:18) dadli написал(а):
LRCenter
если масив может так?
записиваем вся елементи масива в тесктовом фаиле, а потом понимаем сколко весит етот фаил:

$mas = array("aaaa","bbbb","dddd","cccc","ff");

if (is_array($mas)) {
$hand = fopen("ttt.txt",'w+');
foreach ($mas as $val) {
fwrite($hand,$val);
}
}




$obiom = stat("ttt.txt");
echo $obiom[7];

Спустя 15 минут, 58 секунд (16.11.2011 - 16:34) linker написал(а):
Ну а подумать, рекурсия и всё такое
function sizeVar($var)
{
$size = 0;
if (is_array($var))
{
foreach($var as $val)
$size += sizeVar($val);
}
else
$size = strlen($var);
return $size;
}

$a = array('abc', 'abcdtf', array('rtt', 'ddd'));
echo sizeVar($a);

Спустя 3 часа, 56 минут, 41 секунда (16.11.2011 - 20:31) vital написал(а):
echo(memory_get_usage());
$myvar='THISISNOTATEXT';
echo(memory_get_usage());


А вообще базовые типы данных имеют фиксированный размер и не изменяются динамически.
МОжете просто получать тип переменной=ее размер.

Спустя 11 часов, 20 минут, 51 секунда (17.11.2011 - 07:52) linker написал(а):
vital
У меня например, на серваках, такой финт не проходит. А строка очень даже меняет свой размер, массив тоже базовый тип, лучше говорить "скалярные типы", а не базовые.

Спустя 7 часов, 25 минут, 13 секунд (17.11.2011 - 15:17) LRCenter написал(а):
Мда, сложно все как-то. Странно что нет спец. функции.

Спустя 12 минут, 54 секунды (17.11.2011 - 15:30) linker написал(а):
Ну потому что PHP не строго типизированный язык, а потому в любой момент строка может стать массивом, или наоборот. Здесь нет понятия байт, слово, двойное слово и т.п. здесь всё integer. Вобщем не вижу смысла.

Спустя 1 минута, 56 секунд (17.11.2011 - 15:32) ADiel написал(а):
если важен только факт изменения массива, можно использовать strlen(serialise($array))


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.