如果我在PHP中的以下变量:如何获得一个变量的PHP内容的大小
$Message='Hello, this is just test message';
我怎样才能得到它以字节内容的大小?例如,要打印这样的:
<p>Message size is 20KB</p>
如果我在PHP中的以下变量:如何获得一个变量的PHP内容的大小
$Message='Hello, this is just test message';
我怎样才能得到它以字节内容的大小?例如,要打印这样的:
<p>Message size is 20KB</p>
$start_memory = memory_get_usage();
$foo = "Some variable";
echo memory_get_usage() - $start_memory;
这是好的,如果您正在使用任何类型的变种的工作。
strlen
返回的字节的字符串中的数字,而不是字符长度。查看PHP手册here。
仔细查看:
注:
的strlen()返回的字节数,而不是字符的字符串中的数量。
如果将结果乘以8,则可以得到比特。
这里有一个函数可以很容易地为你做数学。
function strbits($string){
return (strlen($string)*8);
}
注意,如果使用,memory_get_usage()
,你将有错误的返回值。内存获取使用量是由PHP脚本分配的内存量。这意味着,在它的解析器中,它为字符串和字符串的值分配内存。因此,设置var之前和之后的值将高于预期值。
实施例,所述串:Hello, this is just test message
,产生以下的值:
Memory (non-real): 344 bytes
Strlen: 32 Bytes
Strlen * 8bits: 256 bits
下面是代码:
<?php
$mem1 = memory_get_usage();
$a = 'Hello, this is just test message';
echo "Memory (non-real): ". (memory_get_usage() - $mem1)."\n";
echo "Strlen: ". strlen($a)."\n";
echo "Strlen * 8bits: ". (strlen($a) * 8),"\n";
比我的更好的解决方案。 – 2012-07-06 17:05:49
这是有点关闭。 memory_get_usage()返回当前分配给PHP脚本的内存量(以字节为单位)。 '你的脚本分配了内存来设置变量'$ foo'以及内存来设置变量'$ foo'为一个字符串并且附加一个值。结果高于字符串的实际位/字节数。 – 2012-07-06 17:32:33
那么为什么当我使用''某些变量''作为字符串或''某些变量某些变量某些变量“(多次)时它总是返回272?即使我分配空字符串,它仍然显示272.看来,这种方法是不准确的 – vladkras 2014-09-05 16:05:07