根據 PHP 7.0.0,PHP 中的字串在 64 位元版本中沒有特定的長度限制。但是,32 位元版本和早期版本施加了 2GB(2147483647 位元組)的限制。
在 PHP 5.x 中,由於使用,字串被限制為 231-1 位元組有符號 32 位元整數來記錄長度。
PHP 腳本對其可以分配給變數的總記憶體有限制,有效地限制了變數的長度單字串變數。此限制由 php.ini 中的 memory_limit 指令設定。 PHP 5.2 預設為 128MB,早期版本預設為 8MB。
如果沒有指定記憶體限制,則預設為編譯時設定的值。在 php.ini 中指定值 -1 會停用記憶體檢查,從而允許腳本使用作業系統提供的盡可能多的記憶體。
記憶體限制指令施加了實際限製字串長度,無論理論限制如何。此外,使用 file_get_contents() 等函數取得檔案內容時,檔案的大小可能會是一個因素。
一個簡單的示範:
<code class="php">ini_set('memory_limit', 1024*1024); printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 255*1024); echo "Allocated string of 255KB\n"; printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 256*1024); echo "Allocated string of 256KB\n"; printf("memory: %d\n", memory_get_usage(true));</code>
這裡,設定了 1MB 的記憶體限制。分配 255KB 字串記憶體不會超出限制,但嘗試分配 256KB 會因達到限製而觸發致命錯誤。
以上是PHP 中字串長度的實際限制是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!