如果我在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